- 프로세스란? ( = program in execution ) ( 프로세스를 관리하는것은 os )
- 정의 : 실행중인 프로그램을 "프로세스"라고 한다.
- 운영체제 입장에서는 프로그램을 실행시켜주는것, 작업의 단위가 프로세스 이다.
- 하나의 프로세스가 실행되기 위해 cpu, memory, files, io 와 같은 리소스를 관리 할 수 있어야 한다.
- cpu가 메모리에 있는 인스트럭션들을 하나씩 fetch해와서 cpu에서 execute 하는걸 컴퓨터라고 한다.
- 실행파일은 하드에 저장되어있다. 실행파일을 실행하면, 이를 메모리에 올린다. 이 메모리에 올라간걸 프로세스라고 한다.
- OS는 프로세르를 관리해야한다.
여러개의 섹션으로 나뉘어져 있는 프로세스, 프로세스의 구조를 보면- 텍스트 섹션
- 데이터 섹션(전역변수 부분 )
- 힙 섹션 ( 메모리 할당시, 동적 할당 부분)
- 스택 섹션 ( 함수 파라미터, 지역변수, 주소 등)
- 프로세스의 life cycle
- new -> running -> waiting -> Ready -> Terminated
* forck란 시스텤 콜을 통해 프로세스를 하나 생성
- 초기화 할꺼 다하면 ready 로 가고
- os가 interrupt를 주면 ->ready 로 가고
- i/o 입력 기다릴꺼면 waiting queue 로 가고,
- ready 상태일때, 스케줄러가 dispatch (=보내다) running 상태로
- new -> running -> waiting -> Ready -> Terminated
- 프로세스를 어떻게 관리하나?
- PCB, TCB ( process control block, task control block)
- 각 프로세스들이 가져야할 정보를 pcb에 저장한다. 저장해야할 정보로는 다음의 것들이 있음.
- process state
- program counter : pc 란 instruction register
- 프로세스 스케쥴링
- 프로세스가 시스템에 들어가기전에, ready queue에 쌓인다.
- i/o를위해 waiting 상태로 변경될 경우, i/o queue에 넣어지고, 원하는 결과를 얻고나면, ready queue 에 넣어진다.
- Context Switch
- context 란? : pcb 정보를 context 라고 보면된다
- interrupt 가 발생하면
- 시스템은 실행중인 프로그램의 context를 저장하고
- 재개되면 이를 복원한다. - context switch 란?
- cpu콜을 다른 프로세스에게 넘겨주면서, 현재 pcb를 저장했다가, 재개될때 복원하는것을 말한다.
- Operatig on Process
프로세스를 생성하려면? (use os fork)
- 프로세스의 tree관계가 성립한다.
- 부모 프로세스와 자식 프로세스는 address-space를 공유하거나 새로 생성 할 수 있다. - process terminates
- exit() -- os system call
-- 끝났으면 자원 회수한다. - 좀비 or 고아
부모프로세스를 fork 하여 자식 프로세스를 만들어 냈는데, 부모 프로세스를 종료하면, 자식 프로세스가 Orphan이 된다.
근데 부모프로세스가 fork한 자식을 신경쓰지 않으면 좀비 프로세스가 된다.
좀비 :
'이거슨 상식!' 카테고리의 다른 글
git detached HEAD 연결하기 (0) | 2023.01.09 |
---|---|
psql DB 명령어 모음집 (0) | 2022.11.29 |
ffmpeg 커맨드 구간 편집, 크기변환 (0) | 2022.08.12 |
초짜 이미지 웹크롤링 (22.05.24 동작확인) (0) | 2022.05.24 |
명령어모음집 (0) | 2022.04.24 |