<운영체제> Process 1
본 게시물은 영남대학교 곽종욱 교수님의 강의를 기반으로 작성 되었습니다.
<Process Concept>
- An OS executes a variety of programs:
- Batch system (일괄 처리 시스템)
- Interactive System (Time-shared systems)
- The terms job and process almost interchangealbly
- Process : a program in execution (현재 실행중인 프로그램)
- the unit of resourece allocation = OS가 할당하는 자원의 단위
- the unit of dispatching => CPU에 보내서 실행시키는 하나의 단위
- progresses in sequential fashion => 순차적으로 실행
- A process includes(5가지 요소):
- Program(code,text) and data section for process image
- Stack and heap section for memory management
- Other meat data
<Process Image in Memory>
- Process is (PCB in kernel Space) + (Process image)
- In case of Kernel Mode : entire address spaces are accessible
- In case of user Mode : only user address spaces are accessible
- Kernel은 memory의 모든 영역에 접근 가능(OS는 컴퓨터에서 신과 같다고 보자!)
- User는 User영역 내에만 접근 할 수 있다.
- global or static variable -> Data영역(프로그램 실행 내내 존재하는 변수들)
- local variable(메서드가 호출 될때만 활성화 되는 변수들) -> stack(push/pop 반복)
- dynamic allocation -> heap
- code -> text
- Some parts of data is called bss, which contains uninitalized global variable or uninitalized static variable -> 초기화 되지 않은 전역변수 저장하는곳!
<Process State>
- Process는 5가지 상태가 존재
- new : fork()에 의해 프로세스가 생성된 상태
- ready : OS가 admitted해서 메모리에 process가 올라가 있는 상태
- running : Scheduler dispatch, 즉 process를 CPU에 올린 상태
- terminated : exit()을 호출해서 끝난 상태
- waiting : I/O or event wait ex) 100장 프린트해!라는 인터럽트 발생하면 waiting으로 넘어간다. cf) busy-waiting인 polling-system에서는 waiting이 없다
- running -> ready : timer-interrupt에 의해 time-sharing을 보장하기 위해(동시에 실행되는것처럼 보이게하기위해서)
<Process Control Block - PCB>
- meta-infomation을 저장하는 곳
- Kernel 영역에 존재
- Table형태를 가짐(c의 구조체)
- Process하나당 PCB를 하나씩 각각 가진다.
- Process State(상태),counter(현재 프로세스의 주소값),CPU registers, scheduling infomation 등등의 정보를 가진다.