일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- HtmlElement
- innerHTML
- Servlet
- 리다이렉트
- addEventListener
- 문자열
- 자바스크립트 이벤트
- 이벤트 핸들러
- Web
- 포워드
- eventlistener
- HTML
- jsp내장객체
- javascript
- 노드
- element
- HTTP
- 노드 삭제
- 파이썬 코테
- 노드 추가
- Object
- 이벤트
- backend
- Array
- debugging
- 노드 객체
- 노드 replace
- webprogramming
- 자바스크립트
- 코딩테스트
- Today
- Total
seoyoung.dev
2. 프로세스 본문
http://www.kocw.net/home/search/kemView.do?kemId=1046323
운영체제
운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각
www.kocw.net
* Context
(1) 프로세스의 cpu 수행상태를 나타내는 하드웨어 문맥
- instruction 을 어디까지 실행했는가 : program counter, 각종 레지스터가 어떤 값을 가지고 있었는지,
(2) 프로세스 주소공간에 어떤 내용 들어있는지 ( code, data, stack )
(3) 프로세스 관련 커널 자료구조
- os 가 프로세스 관리하기 위해서 자신의 data 영역에 PCB 저장 ( 커널 주소공간 내 data 영역 )
- kernel stack : system call 등 커널에 요청 시, 커널 주소공간 내 stack 영역에 어떤 프로세스의 요청인지 저장
* 프로세스의 상태
- Running : instruction 수행중인 상태
- Ready : 메모리 등 다른 조건 모두 만족, cpu 를 기다리는 상태
- Blocked ( wait / sleep ) : cpu 를 줘도 당장 instruction 을 수행할 수 없는 상태
: 예) event( I/O ) 만족되지 않아 기다리고 있거나, 디스크에서 파일 읽어와야 할 때
- Suspended ( stopped )
: 외부적인 이유로 프로세스 수행이 정지된 상태 (ex- 중기 스케쥴러)
: 프로세스 통째로 swap out ..메모리로부터
ex) 사용자가 프로그램 일시정지 / 시스템이 프로세스 잠시 중단시킴
[ Blocked : 자신이 요청한 event가 만족되면 Ready 로 / Suspended : 외부에서 resume해 줘야 Active ]
- New : 프로세스 생성 중인 상태
- Terminated : execution 이 끝난 상태
* PCB ( Process Control Block )
(1) OS 가 관리상 사용하는 정보 - 프로세스 상태 / 프로세스 ID / 우선순위 나 스케쥴링 정보
(2) 프로세스의 context 표현하기 위해 program counter 나 레지스터 값
(3) 메모리 관련 code, data, stack 의 위치 정보
(4) 프로세스가 사용하고 있는 file 들에 대해 descriptor들
* Context Switch
: CPU 를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
: 내어주는 프로세스 상태를 그 프로세스의 PCB 에 저장 ( CPU 의 레지스터에 저장되있던 값이나 PC 값..)
: 새롭게 CPU 를 얻는 프로세스의 PCB 로부터 값들 얻어서 CPU 에 사용
>> System call 이나 interrupt 발생 시, 반드시 context switch 가 일어나는 것은 아니다. : cpu 제어권이 사용자 프로세스 -> 운영체제로 넘어가는 것 : context switch(x) : 다시 원래 프로세스로 cpu 돌아가면 이것 역시 context switch 가 아님 -> 커널 모드로 들어왔다가, 다시 user mode 로 복귀 -> 이것도 pcb 에 context 를 save 해야 하긴 하지만, context switch 하는 경우 더 부담이 커진다. ex) cache-memory-flush : 위 경우 발생한 후, 운영체제가 다른 프로세스에 cpu 제어권 넘겨주면 context switch 맞음 |
* 프로세스 스케쥴링 큐
- Job Queue ( 현재 시스템 내 있는 모든 프로세스의 집합 )
- Ready Queue
- Device Queue
* 스케쥴러
- job scheduler ( 장기 스케쥴러 )
: 프로세스에 메모리 주는 문제 .. ready 상태 될 때, 메모리에 올라가도록 admitted 결정
: 메모리에 올라가있는 프로세스의 수 제어 (degree of Multiprogramming )
: 보통의 time-sharing system 에는 프로그램 시작 되면 곧바로 ready..장기 스케쥴러 없음
- cpu scheduler ( 단기 스케쥴러 )
: 어떤 프로세스 running 시킬 지 결정
- swapper( 중기 스케쥴러 )
: 메모리에 너무 많은 프로그램 올라가 있으면, 일부 프로그램 통째로 쫓아냄
: 프로세스에게서 메모리 뺏는 문제 (degree of Multiprogramming 제어)
* Thread
: 프로세스 내 cpu 수행 단위
: 프로세스 1 개에 PC 여러개 - 쓰레드 별로 수행하고 있는 코드부분 다르게 가리킴
: 메모리 주소공간 공유, 프로세스 상태,, 각종 자원들도 쓰레드 간 공유 (=task)
: 별도로 가지고 있는 것은 CPU 수행과 관련된..Program Counter / Register / Stack
[ 쓰레드 사용의 장점 ]
(1) 응답성
: 하나의 스레드가 blocked 상태인 동안에도, 동일 task 내의 다른 스레드 실행되어, 빠른 응답시간 제공
ex) 웹 서버에서 브라우저 하나 요청 - 하나의 쓰레드가 이미지 같은거 i/o->blocked / 다른 쓰레드는 계속 display
(2) 자원 공유
: 동일한 일을 수행하는 다중 스레드 - 자원 절약..(별도로 메모리에 올려놓지 않아도 되니까)
(3) 경제적
: 프로세스 하나 추가하는 것보다 쓰레드 하나 생성하는 것의 오버헤드가 훨씬 적음
: 프로세스 간 context switch 도 오버헤드가 큼 -> 쓰레드 간 switch 가 훨씬 간단
(4) cpu 여러개 있는 경우(MP Architecture) 병렬성 증가
( user-level 쓰레드 : 라이브러리 기반, 사용자 수준에서 쓰레드 구현 )
'TIL > 운영체제' 카테고리의 다른 글
4.CPU Scheduling (0) | 2021.09.27 |
---|---|
3.Process Management (0) | 2021.08.10 |