멀티 프로그래밍 운영체제에선 다수의 프로그램들이 메모리에 적재되어 리소스를 공유한다.


이를 적절히 공유 하기 위해서 제어할 필요가 있었는데 이를 위해 프로세스라는 개념이 탄생했다.


프로세스의 단순한 의미는 실행중인 프로그램(a program in execute)이다.


디스크에 정적인 프로그램 형식으로 저장된 것이 메모리에 적재되어 프로그램의 진행에 따라 적재되는 내용이 바뀌는 동적인 형태로 바뀌면 이를 프로세스라고 부른다.


프로세스 상태에서는 운영체제의 제어를 받을 수 있다.


프로세스에는 현재 상태(문맥)을 나타내는 프로그램 카운터,레지스터들도 포함된다.


프로세스의 메모리 구조는 스택, 힙 코드, 데이터로 이뤄진다.





커널 주소 공간의 내용


커널 코드 : 커널 프로세스의 코드가 저장됨


data : cpu, memory, disk 관리를 위한 data structure 저장됨, 프로세스 관리를 위한 PCB(Process Control Block)저장됨.


stack: 각각의 프로세스의 커널 스택이 저장됨.


유저 프로세스로부터 시스템 콜을 받고 커널 프로세스를 실행하면 실행 과정중 서브루틴이 호출되어 스택을 사용할때 커널 스택이란 것을 스택 으로 사용함. 


각각의 프로세스마다 따로 커널 스택을 두는 이유는 시스템 콜을 해서 커널 프로세스를 사용하는 유저 프로세스가 여러개이기 때문, 데이터 오염을 방지하기 위함.



PCB :  프로세스를 관리하기 위해 프로세스의 정보를 담는 데이터 구조




CPU가 한 프로세스에서 다른 프로세스로 넘어갈때 필요한 과정


한 프로세스가 실행 중 인터럽트가 발생하여 다른 프로세스로 CPU를 넘겨줘야 할때, 다음번에 CPU를 받았을때 이전상태에서 계속해서 실행 될 수 잇도록 현재의 프로세스 문맥(context)를 저장하고, 로드하는 과정.


이 때 context 저장, 로드과정에 PCB가 사용된다.




프로세스의 상태




Running : CPU를 사용하고 있는 프로세스 1개의 CPU가 있는 컴퓨터에서는 1개의 Running 상태인 프로세스가 있다.


Ready : CPU를 사용하길 기다리는 상태로, CPU를 사용할 수 있는 상태가되면 즉시 Running 상태가 Instruction을 프로세싱할 수 있는 상태


Blocked : CPU를 사용할 수 있는 상태가 되어도 즉시 Running 상태가 될 수 없는 상태,  파일을 읽어오는 IO 작업이나 이벤트가 완료, 발생될 때까지 기다리는 상태.  이벤트,IO 완료시 Ready 상태가 된다.



CPU를 사용하는 , Running 상태인 프로세스는 한개 뿐이고, 타이머 인터럽트등이 발생하면 Ready Queue에 대기한다.


Running 중 disk를 읽어와야 할때 가 되면 Blocked 상태가 된채로 Disk IO Queue에 대기한다.


Running 중이던 프로세스가 Queue에 대기하면 Ready Queue에서 하나가 선택되어 Running 상태가 된다.


Disk Controler에 의해서 Disk IO Queue에 대기하던 프로세스가 처리되고, 처리를 완료하면 CPU에 인터럽트를 건다.


인터럽트 걸린 CPU는 제어권을 커널에게 넘겨주고 IO처리를 마친 프로세스를 Ready 상태로 만들어둔다.




Ready Queue와 Device Queue 의 구조도


실제로는 프로세스가 Queue에 대기하는것이 아니라 프로세스를 관리하기 위한 PCB가 Queue에 대기함.





Long-term Scheduler : 시작한 프로세스 중 어떤 프로세스를 메모리에 적재 시킬까를 결정하는 스케줄러


멀티프로그래밍의 정도(메모리에 적재되는 프로그램의 수)를 제어함.


현대의 Time Sharing System 에서는 장기스케줄러가 없고, 프로세스를 시작하면 바로 Ready상태로 들어감.



Short-term Scheduler : Ready Queue에 있는 프로세스중 어떤 프로세스를 Running 시킬지 결정하는 스케줄러.



Medium-term Scheduler : 메모리에 여유공간이 부족할시 프로세스를 메모리에서 디스크로 제거하는 스케줄러


역시 멀티프로그래밍의 정도를 제어함.





Suspended 상태 : Medium-Scheduler에 의해 메모리에서 디스크로 쫓겨난 상태


Instruction 수행이 정지된 상태. CPU를 얻어도 메모리에 적재되어 있지 않기때문에 Instruction 수행이 불가능함.

'시스템 > 운영체제' 카테고리의 다른 글

#3 컴퓨터 구조 요약  (0) 2018.09.01
#2 운영체제 발전 과정과 유형  (0) 2018.08.27
#1 운영체제의 소개  (0) 2018.08.26

+ Recent posts