- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[O.S.] 프로세스 란? 본문
프로세스 란?
- 실행중인 프로그램
- 프로세서(cpu)에게 할당된 개체
- 프로세스는 순차적 실행
- 프로세스 제어 블록에 의해 관리 된다. 이는 나중에 알아 보도록 하자.
작업스캐줄러 역활
-작업을 시스템 내로 넣는 작업 으로 상위 단계 스케줄라 라고도 한다.
-작업을 선택하여 준비 큐에 전달 하고,
-가능한 시스템 자원의 사용을 극대화 할 수 있도록 작업을 배치 한다.
-I/O 위주의 작업(I/O사이클)과 연산위주의 작업(cpu사이클)을 균형있게 선택하는 것이 좋다.
I/O 작업이 많으냐 cpu작업이 많으냐에 따라 입출력 바운드 작업이냐 cpu바운드 작업이냐로 부른다.
프로세스 스캐줄러의 역활
-하위 단계 스캐줄러 라고도 부르며
-cpu를 언제 얼마나 사용 할 것인지를 결정한다.
-준비큐에 있는 작업에 cpu를 할당 한다.
-cpu를 할당 하기전 프로그램 사이의 일반적 특성을 이용한다.
-상호작용(사용자와 시스템간의 주고 받는 경우가 많은 경우)이 많은 환경에서는 중간 단계 스캐줄러를 사용.
중간단계 스캐줄러란, cpu의 일부작업을 보조기억으로 빼내서 일단 보류시켜 놓는 것을 말함.
그러면 나머지 작업이 상대적으로 빨리 끝나게 된다.
프로세스의 상태는
현재의 활동에 의해 정의 된다. 생성, 준비, 실행, 대기, 종료 중의 하나의 상태를 가지고,
-작업스캐줄러에서 생성을 하면 준비상태로 이동 하고
-실행상태는 작업이 처리되는 상태,
-대기상태는 I/O완료를 기다리는 상태,
-대기상태가 끝나면 프로세스는 다시 준비상태로 돌아 간다.
-이는 작업스캐줄러나 프로세스 스캐줄러에 의해 상태가 전이 된다.
그럼 프로세스의 상태 전의에 대해 더 알아보자.
---------->
생성 ----> 준비 실행 -----> 종료
| <--------- |
| |
| |
|<--- 대기 <----|
(--; 그림이 이상하다!!)
일단,
준비단계에서는
여러개의 프로세스들 올려와 있고, 이들중 어떤 것을 실행상태로 보낼 것이냐를 담당 하는 것이 운영체제의 디스페쳐가 담당 한다.
준비단계의 프로세스가 실행단계로 옮겨가는 과정을 디스패칭 이라하고,
실행단계에서 cpu의 할당 시간이 끝나면 다시 준비상태로 돌아간다.
할당된 시간이 끝나지 않았는데 중간에 입출력이 발생한는 경우는 대기 상태로 갔다가 조건만족(입출력이 다끝나면)이 되면 준비 상태로 들어가게 된다.
실행중에 할당된 시간안에 실행이 모두 끝나면 종료를 하게 된다.
그럼 이쯤에서 초반에 말한
프로세스 제어 블록에 대해 알아보자.
-프로세스 제어 블록은 프로세스를 관리하는 정보를 가지고있다.
-각 프로세스는 자신의 PCB(프로세스 제어 블록)를 가진고
-이를 태스크 제어블록, 작업제어블록, 프로세스서술자 라고도 부르며
-이는 프로세스를 명시해주는 정보를 가지고 있다.
------------------------
| 포인터 | 프로세스 상태 |
|----------------------|
| 프로세스 번호 |
|----------------------|
| 프로그램 카운터 |
|----------------------|
| 각종 레지스터 |
| . |
| . |
------------------------
프로세스의 모든 정보를 저장해 두었다가 이 프로세스를 회복 했을 때 이어서 작업하게 된다.
프로세스와 프로세스와의 상태 공유 유무에 따라 독립적프로세스, 유기적프로세스로 나뉜다.
독립적 프로세스는
-상호 공유되지 않는다.
-실행을 시키면 같은 결과만 얻게 된다.
-실행 중단, 재시작이 용이 하다.
유기적 프로세스는
-상태를 상호 공유 한다.
-실행은 비결정적 즉, 실행결과는 같은 입력을 주더라도 결과가 항상 다를 수 있다.
프로세스 생성
-실행: 병행 <---> 순차
-공유: 전체 <---> 부분
프로세스 종료
-프로세스의 마지막 명령이 끝나면 종료 된다.
-연속적인 종료(운영체제에 의해 실행): 부모 프로세스가 종료되면 자식 프로세스들도 종료
-자식이 종료될 때 부모 프로세스에게 결과를 전달 한다.
'★─Programing > ☆─O. S.' 카테고리의 다른 글
[O.S.] 인터럽트 프로그래밍 .. (0) | 2009.02.25 |
---|---|
[O.S.] 프로세스의 병행성 구분 (0) | 2009.01.31 |
[O.S.] 쓰레드와 스케줄링 (0) | 2009.01.31 |