운영체제 OS : Process

debbu·2021년 10월 20일
0

프로세스는 executing프로그램
멀티프로그래밍이란?
cpu가 프로세스에서 프로세스로 변경됨
하나의 시간동안 하나의 프로그램만 active
왔다갔다 하면서 수행, I/O등이 올때 switch를 통해서 cpu를 최대로 돌릴수 있음
시간할당량을 설정하여 프로세스간의 switching이 이루어질수도있음
cpu가 하나이면 pc 레지스터도 하나 다만 프로세스 마다 pc값을 메모리에 저장하여 conceptual한 pc값은 한개가 아닌 프로세스 수에 맞출 수 있음

모든 프로세스에는
코어이미지(address space: 3segment text, data, stack)
프로세스 엔트리 테이블이 존재

각 프로세스 마다 테이블 엔트리가 대응 운영체제가 이를 관리
테이블 엔트리란?
프로세스를 나중에 수행하기 대비하여 정보/레지스터값, pc값 등을 저장한 장소

프로세스 state
process state diagram : 종류 Running Ready Block
Running : cpu를 차지하고 수행되고있는 상태
멀티프로그래밍 같은경우 시간할당량이 끝났을때 running 에서 ready상태로 끌려옴

Ready : 큐가 존재 이에 쌓이게됨 / 스케쥴러가 ready, running state관리
Blocked, Running상태에서 내려온 프로세스가 큐에서 대기

Blocked : 프로세스가 I/O등을 요구하게되면 blocked 상태로 내려옴
CPU를 사용하지않는 I/O 명령어나 request가 있을 시, running에서 blocked 상태로 변경

Address space of Process
text : code부분 instruction
data : heap영역, static영역이 포함되는 곳
stack : automatic variable 은 스택안에 존재 (ex. C기준 function)
자세한것은 Java나 assembly 포스트

Process Hierarchies
process tree : 부모 노드가 자식 프로세스를 생성
자식 프로세스도 own프로세스 생성가능
Unix기준 한 터미널에서 실행되는 프로세스들 프로세스 그룹으로 묶을 수 있음
Windows는 반면에 계층구조가 없음 모두 평등하게 생성

Process Table
process 가 나중에 수행되야할때를 대비해서 저장되어야하는 정보들이 들어감
(1) process management
register pc, sp, priority, program status word (=시스템콜에서 cpu가 어떤 모드에서 실행되는지 파악하는데 필요한 비트) schedueling params, cpu time, process group
(2) memory management
pointer to text segment, pointer to data segment, pointer to stack segment
(3) file management
root dir, file descriptor(=open 파일에 대한 정보), User ID, Group ID

0개의 댓글

관련 채용 정보