프로세스가 실행되던 CPU 상태(레지스터 값들)을 메모리에 있는 PCB에 저장합니다.
프로세스가 실행되던 중에 문맥 교환(Context Switch)을 하게 되면 현재 CPU의 상태를 현재 프로세스의 PCB에 저장하고,
스케쥴러에 의하여 프로세스가 다음번에 다시 CPU를 선점하게 되면 CPU 상태를 PCB에 저장된 CPU 상태 값으로 설정하여 프로세스 실행을 재개합니다.
물론, PCB에는 프로세스의 CPU 상태 이외에도 프로세스 제어와 관련된 많은 정보들이 들어 있습니다.
실제 구현 측면에서는 스케쥴링 단위가 되는 것은 프로세스가 아닌 쓰레드이므로, TCB(Thread Control Block)에 CPU 상태가 저장됩니다.
쓰레드마다 각자 스택을 가지고 있고, 스택은 사용자 모드 스택과 커널 모드 스택이 따로 존재하는데, 커널 모드 스택의 상위 공간을 TCB 용도로 많이 사용합니다.
OS는 OS만 공부하면 잘 와닿지 않습니다. 아키텍처 공부와 병행하시는 것을 추천해드리겠습니다.
프로세스는 메모리에 로드되어 있고, 메모리에 있는 프로세스의 코드 주소가 PC에 하나씩 저장됩니다. CPU는 PC 번지에 있는 프로세스 코드를
메모리에서 CPU로 읽어와서(fectch) 하나씩 실행하게 되는 것이죠. PC는 다음번 수행할 코드의 메모리 번지로 증가하구요. (32비트 머신은 +4번지씩 증가합니다.)
레지스터 라고 하는데요?
http://kin.naver.com/qna/detail.nhn?d1id=13&dirId=130201&docId=35801503&qb=7ZSE66Gc6re4656oIOy5tOyatO2EsA==&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0&pid=RTZ05c5Y7vhssv%2BnZb8sssssstK-116698&sid=UWEz6nJvLBcAAFnue@A
http://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EC%B9%B4%EC%9A%B4%ED%84%B0
http://terms.naver.com/entry.nhn?cid=2959&docId=829394&mobile&categoryId=2959
http://terms.naver.com/entry.nhn?cid=2955&docId=1605603&mobile&categoryId=2955
레지스터가 그렇게 빠르면.
레지스터를 메모리로 만들면 될텐데... ㅡ_ㅡ??
//레지스터'라고 찾아보세요.
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10103&docId=66590267&qb=66CI7KeA7Iqk7YSwIOuplOuqqOumrA==&enc=utf8§ion=kin&rank=1&search_sort=0&spq=1&pid=RTZ0/35Y7vRssaeCXwwsssssstC-373168&sid=UWEz6nJvLBcAAFnue@A
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1010302&docId=64360347&qb=66CI7KeA7Iqk7YSwIOuplOuqqOumrA==&enc=utf8§ion=kin&rank=2&search_sort=0&spq=1&pid=RTZ0/35Y7vRssaeCXwwsssssstC-373168&sid=UWEz6nJvLBcAAFnue@A
http://kin.naver.com/qna/detail.nhn?d1id=11&dirId=1118&docId=54420381&qb=66CI7KeA7Iqk7YSwIOuplOuqqOumrA==&enc=utf8§ion=kin&rank=3&search_sort=0&spq=1&pid=RTZ0/35Y7vRssaeCXwwsssssstC-373168&sid=UWEz6nJvLBcAAFnue@A
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
레지스터 맞네요~
책을 계속 넘기면서 공부하다보니까
PCB (Process Control Block)에 있는 레지스터에 저장된다네요~
여전히 의문은 프로세스는 메모리에 올라와 잇는거고 레지스터는 CPU에 있는 물리적인게 아닌가 하는 생각인데...
공부하는 대학생 꿈나무 프로그래머 입니다 !
프로세스가 실행되던 CPU 상태(레지스터 값들)을
프로세스가 실행되던 CPU 상태(레지스터 값들)을 메모리에 있는 PCB에 저장합니다.
프로세스가 실행되던 중에 문맥 교환(Context Switch)을 하게 되면 현재 CPU의 상태를 현재 프로세스의 PCB에 저장하고,
스케쥴러에 의하여 프로세스가 다음번에 다시 CPU를 선점하게 되면 CPU 상태를 PCB에 저장된 CPU 상태 값으로 설정하여 프로세스 실행을 재개합니다.
물론, PCB에는 프로세스의 CPU 상태 이외에도 프로세스 제어와 관련된 많은 정보들이 들어 있습니다.
실제 구현 측면에서는 스케쥴링 단위가 되는 것은 프로세스가 아닌 쓰레드이므로, TCB(Thread Control Block)에 CPU 상태가 저장됩니다.
쓰레드마다 각자 스택을 가지고 있고, 스택은 사용자 모드 스택과 커널 모드 스택이 따로 존재하는데, 커널 모드 스택의 상위 공간을 TCB 용도로 많이 사용합니다.
OS는 OS만 공부하면 잘 와닿지 않습니다. 아키텍처 공부와 병행하시는 것을 추천해드리겠습니다.
Just do it!
PC(Program Count)는 아키텍처에서 다음번
PC(Program Count)는 아키텍처에서 다음번 수행할 코드의 메모리 주소를 나타내는 것입니다. 아키텍처 관련 공부를 해보시는 것을 추천해드리겠습니다.
추천 서적> 컴퓨터 구조 및 설계
프로세스는 메모리에 로드되어 있고, 메모리에 있는 프로세스의 코드 주소가 PC에 하나씩 저장됩니다. CPU는 PC 번지에 있는 프로세스 코드를
메모리에서 CPU로 읽어와서(fectch) 하나씩 실행하게 되는 것이죠. PC는 다음번 수행할 코드의 메모리 번지로 증가하구요. (32비트 머신은 +4번지씩 증가합니다.)
Just do it!
정답은
레지스터에도 저장돼고 PCB에도 저장돼는거죠.
레지스터에는 수행할때 저장돼구요 PCB에는 다른 프로세스가 잡스케쥴링때문에 CPU에서 비켜줘야 할상황때문에 "이까지했어" 하고 적어주는거예요 ^^
---------------------------------------------------------------------------------
C(++)과 php 펄등을 공부하고있습니다.
반갑습니다! 리눅스 :-)