https://yozm.wishket.com/magazine/detail/1269/
소프트웨어는 레스토랑으로 떠나보자..
CPU 수행상태를 나타내는 하드웨어 문맥
프로세스는 CPU를 잡고 매 순간 instruption(기계어)를 실행한다.
현재 시점에 이 프로세스가 이 기계어를 어디까지 실행했는가를 알기 위해 레지스터에 어떤 값을 저 장했고, PC(program counter)가 어디를 가리키고 있는가? 등..
주로 register가 어떤 값을 갖고 있는가를 나타낸다.
프로세스의 독자적인 주소 공간
현 시점에 code, data, stack에 어떤 내용이 들어있는가?
프로세스 관련 커널 자료 구조
PCB : 프로세스가 하나 생길 때마다, 운영체제는 그 프로세스를 관리하기 위해 자신의 데이타 영역에 자료구조를 하나 두게됨. 얘한테 CPU, 메모리 얼마나 줘야됨? 잘 돌고 있는거임? 등등의 관리
Kernel stack : 프로세스가 돌다가 code에서 이거 제가 못해여 해주셈 system call 하는 상황 -> 커널 주소공간을 가리키게 되어 커널의 code를 수행 -> stack에 관련 정보 쌓아. 이 커널 주소공간은 프로세스들에게 공유되고 있슴 그래서 누가 호출해서 뭘 쌓았는지 개별로 관리 해줘야댐 그래서 이 커널의 stack은 프로세스마다 다르게 이루어져있다함
엥 근데 이거 왜함?
이 프로세스의 현상태(문맥)을 백업 안해두면, 다음 CPU를 잡았을 때 니 어데고... 첨부터 실행하는 개 비효율적인 컴퓨터 완성이므로
CPU는 하나인데 다수의 프로세스들이 나 주셈 나 쓸거임 하고 기다려 준비 끝났고 CPU만 있으면 instruction 수행 가넝한
time sharing에서는 이 ready 상태의 프로세스들이 CPU를 잡았다 놨다 와리가리 치는 방식
추가
- New : 프로세스가 생성중인 상태
- Terminated : 수행이 끝난 상태. 할 일은 끝났는데 정리하는 작업중..

