전공 과목 이수1👨‍💻/운영체제 OS

운영체제 7주차

천숭이 2021. 4. 15. 17:59

two-state process model

프로세스상태, 프로세스가 큐 구조 상태에서 실행되는데 실행/비실행 상태로 구성된다. 

실행중인 프로그램의 시작주소를 가리키는 포인터값이 각 엔트리=pcb이다. 

 

p.123 프로세스의 생성과 종료

 

표 3.1 프로세스 생성 이유

새로운 일괄처리 작업 운영체제에게 일괄처리 작업 제어 스트림이 제공된다. 새로운 작업을 처리할 준비가 되면, 다음에 수행할 일련의 작업제어 명령을 읽어들일것이다.
대화형 로그온 사용자가 터미널에서 시스템에 로그온한다
서비스를 제공하기 위해 운영체제가 생성 사용자가 대기할 필요가 없도록, os는 사용자 프로그램을 대신해 어떤 기능을 수행할 프로세스를 생성할 수 있다.
기존 프로세스에 의한 생성(spawn : 알을낳다) 모듈화를 위해서나 병렬성을 활용하기 위해, 사용자 프로그램은 많은 프로세스의 생성을 명령할 수 있다. (fork() system call)

 

하나의 프로세스(부모 프로세스)가 다른 프로세스(자식 프로세스)를 생성한다.

 

p.124 프로세스 종료

일괄처리

중지(halt)명령이나 명시적으로 운영체제 서비스 호출을 수행함으로써 이루어진다.

(중지명령은 인터럽트를 발생)

대화식 응용 사용자의 행동에 의해 프로세스의 수행완료가 표시.
ex) 시분할 시스템에서 사용자가 log off하거나 터미널을 끌 때 종료
pc나 워크스테이션 응용을 중단(quit), 운영체제에 서비스 요청
  여러 종류의 오류 및 결함(fault)상태로 인해 프로세스가 종료될 수 있다.

 

5-상태 모델 (five-state model) : 여러개의 큐를 사용

하나의 life cyle(라이프사이클)

 

수행(running) : 현재 수행중인 프로세스

 

준비(ready) : 수행될 준비가 된 프로세스

 

블록/대기(blocked waiting) : 입출력 연산 완료 등과 같은 어떤 이벤트가 발생할때까지 수행될 수 없는 프로세스

 

생성(new 시작) : 지금 막 생성됐지만, 수행 가능한 프로세스 풀(pool)로의 진입이 허용되지 않은 프로세스. 

새로운 프로세스는 자신의 프로세스 제어블록이 생성되었다 할지라도 그 당시까지 주기억장치에 적재되지 않는다.

 

종료(exit) : 프로세스 수행이 중지(halt)되거나 어떤 이유로 중단(abort)되었기 때문에 os에 의해 수행가능 프로세스 풀에서 방출된 프로세스

 

 

 

 

 

 

 

 

P. 127

1 널 -> 생성 어떤 프로그램을 수행하기 위해 새로운 프로세서가 생성된다
2 생성 -> 준비 운영체제가 새로 생성된 프로세스를 받아들일 준비가 되었을때, 프로세스를 생성에서 준비상태로 전이. 대부분의 시스템은 프로세스의 수나 가상메모리의 양을 제한. 제한하는 이유는 활성화된 프로세스가 너무 많아져 시스템 성능이 떨어지는 것을 방지하기 위해서이다.
3 준비 -> 수행 수행할 프로세스를 선택할 때가 되면, 운영체제는 준비상태에 있는 프로세스들 중 하나를 선택. 이는 스케줄러 또는 디스패처의 임무로
4 수행 -> 종료 현재 수행중이 프로세스가 작업을 완료하거나 주앋ㄴ하면, os는 그 프로세스를 종료시킨다
5 수행 -> 준비 전이가 발생하는 이유는 수행중인 프로세스가 자신에게 허용된 최대 처리기 시간을 모두 사용했을 경우. 모든 멀티프로그래밍 운영체제는 가상적으로 이런 종류의 시간 정책을 적용. 이 전이를 유발하는 몇몇 다른 요인들도 있지만, 그것들이 모든 운영체제에 구현되지는 않는다. 
6 수행->블록 프로세스가 자원을 요구했는데 기다려야한다면, 블록상태로 전이된다.
7 블록 -> 준비 블록 상태에 있는 프로세스는 자신이 기다리고 있던 이벤트가 발생하게 되면 준비상태로 전이
8 준비 - > 종료 이 전이는 다이어그램에 확실하게 나오지 않았다.
9 블록 -> 종료 전이와 같은 내용

P. 129 그림 3.8

두개의 큐, 준비큐와 블록큐를 이용해 큐잉 규칙을 구현할 수 있는 방식을 제안. 시스템이 한 프로세스를 받아들이면 그 프로세스는 준비큐에 놓여진다. 다른 프로세스를 실행할 때가 되면 운영체제는 준비큐에 있는 프로세스들 중에서 하나를 선택. 우선순위 정책을 사용하지 않는다면 큐는 단순히 선입선출 큐이다.

수행중인 프로세스가 수행상태를 벗어날 때는, 그 프로세스가 종료되거나 준비큐 또는 블록큐에 놓이게 된다.

 

어떤 이벤트가 발생했을때, 블록큐에서 그 이벤트를 기다리고 있던 모든 프로세스들이 준비큐로 옮겨진다

-> 즉, 운영체제가 블록 큐를 전체적으로 조사해 해당 이벤트를 기다리고 있더 프로세스들을 찾아야 한다.

따라서 각 이벤트마다 블록큐를 두는 것이 효율적이다. 

 

프로세스의 디스패칭이 우선순위 방식에 의한다면, 우선순위 레벨당 하나의 준비 큐를 두는 것이 편리할 것이다. 이렇게 하면 제일 오래 기다린 가장 높은 우선순위의 프로세스를 운영체제가 쉽게 결정할 수 있게 된다.

 

P.130 보류된 프로세스

프로세스 보류에 대한 이유 :

스와핑. 운영체제의 다른 이유, 대화식 사용자의 요청, 타이밍, 부모프로세스 요청

p. 135 ) 3.3 프로세스 기술(description)

운영체제는 컴퓨터 시스템에서 발생하는 사건들을 제어한다. 운영체제는 프로세스가 사용하는 시스템 자원들을 관리하는 개체다.

 

모든 운영체제가 가지고 있는 네가지 타입에 대한 정보

메모리테이블 / 입출력 테이블 / 파일 테이블 / 프로세스 테이블

 

메모리 테이블 : 주기억장치와 보조기억장치 (실메모리와 가상메모리)모두의 자취를 유지하기 위해 사용. 어떤 프로세스가 특정 공유메모리 영역에 접근가능한지를 나타내는 보호속성

 

p.137 프로세스 제어 구조

프로세스 제어블록에 있는 정보들의 세가지 범주

- 프로세스 식별(pid) :

주 프로세스 테이블에 대한 인덱스

 

- 프로세스/처리기 상태정보:

처리기 레지스터의 내용들로 구성, 프로세스가 인터럽트 되어서 중단되면 모든 레지스터 정보들은 저장돼야 하는데, 그 이유는 프로세스가  재개될때 정보 복구를 위해.

 

- 프로그램 상태 워드(PSW) :

모든 처리기를 설계할때 포함되는 레지스터/레지스터 집합. psw에는 상태정보가 저장된다.

 

p.140 표3.5) 프로세스 제어블록의 일반적인 구성요소

-프로세스 식별

식별자

 

-처리기 상태 정보

제어레지스터 및 상태 레지스터프로그램카운터, 조건코드, 상태정보스택포인터

 

-프로세스 제어 정보

스케줄링과 상태정보 (프로세스 상태, 우선순위, 스케줄링과 관련된 정보, 이벤트)자료구조화프로세스간 통신(IPC)  *******언급

프로세스 권한

메모리 관리

자원의 소유권과 이용률

 

p.144 3.4 프로세스 제어

권한을 덜 가진 사용자 모드와 시스템 모드, 제어모드, 커널모드

두가지 모드를 사용하는 이유는 사용자 프로그램의 간섭으로부터 운영체제 및 프로세스 제어블록과 같은 주요 운영체제 테이블을 보호할 필요가 있기 때문이다. 커널모드에서 수행되는 소프트웨어는 처리기와 모든 명령어들, 레지스터들, 그리고 메모리를 완전히 제어할 수 있다. 그러한 제어 수준은 사용자 프로그램의 경우에 필요하지 않으며, 안전을 위해서도 바람직하지 않다.

 

p.146 프로세스 생성순서

1. 새로운 프로세스에 유일한 프로세스 식별자를 할당

2. 프로세스에 공간을 할당

3. 프로세스 제어블록을 초기화한다

4. 적절한 연결을 설정 (준비 또는 준비/보류 리스트)

5. 다른 자료구조를 생성 또는 확장한다.

 

p.149  프로세스 상태 변경

모드전환과 프로세스 교환은 다른 개념. 모드 전환은 현재 수행중인 프로세스의 상태를 바꾸지 않고 수행될 수 있다.

현재 수행상태인 프로세스가 다른상태(준비나 블록상태)로 전이되면, 운영체제는 그 환경을 크게 변경시켜야 한다.

 

완전한 프로세스 교환 순서

1. 프로그램 카운터와 다른 레지스터들을 포함한 처리기 문맥을 저장

2. 현재 수행상태에 있는 프로세스의 제어블록을 갱신한다

3. 프로세스 제어블록을 적절한 큐로 옮긴다.

4. 다음에 수행시킬 다른 프로세스를 선택

5. 선택된 프로세스의 프로세스 제어블록을 갱신하는데, 이때 그 프로세스 상태가 수행상태로 전이

6. 메모리 관리와 관련된 자료구조를 갱신한다.

7. 선택된 프로세스가 이전의 수행상태에서 사용했던 처리기의 문맥을 복원한다. 이전에 저장하였던 처리기 문맥을 처리기로 적재하는 것이다.

 

(149 ~ 151 안나옴)

 

p. 157) 프로세스 제어 (process control)

unix에서 프로세스는 커널 시스템 호출인 fork()를 통해서 생성된다. 

프로세스가 fork()실행하면 수행되는 작업

1. 새로 생성될 프로세스를 위해 프로세스 테이블에 한 슬롯(엔트리)을 할당한다.

2. 자식 프로세스에게 유일한 프로세스 ID를 할당한다.

3. 공유 메모리를 제외하고, 부모의 프로세스 이미지를 복사한다.

4. 부모 프로세스가 소유하고 있는 모든 파일들의 카운터를 증가시켜, 자식 프로세스도 그 파일들을 소유하게 되었음을 알린다.

5. 자식 프로세스를 준비 상태로 설정한다.

6. 부모 프로세스에는 자식 프로세스의 ID번호를, 그리고 자식 프로세스에게는 0을 반환한다.

 

 

'전공 과목 이수1👨‍💻 > 운영체제 OS' 카테고리의 다른 글

5주차  (0) 2021.04.15
운영체제 | ubuntu 우분투 실습  (0) 2021.03.28
운영체제 키워드0316  (0) 2021.03.16