티스토리 뷰

@The Process Model

-프로세스란?

=>프로세스는 수행중인 프로그램 이라는 뜻이다.

-멀티 프로그래밍(Multiprogarmming)

    -메모리에 여러개의 프로그램을 넣어두고 이거하다 저거하다, 이거하다 저거하다...

    -CPU는 한번에 한 프로그램만 수행한다(동시에 수행중인 것 처럼 보이지만, 하나만 수행하는 것이다!)

    -PC(Program Counter)가 하나만 가리키고, 다른걸 하려면 다른데로 이동한다.

-각각의 프로그램은 address space(주소 공간), process table entry(흔히 PCB, process control block이라 부름)을 가진다.

    *PCB: 어느 한 프로세스를 실행하다가 다른 프로세스를 실행할때, 실행하던 프로세스에 대한 정보를 포함한다. 해당 프로세스가 옮겨가기전에 현재 상태를 저장한다.(레지스터 값 등등...) PCB가 없으면 나중에 자신의 작업으로 돌아왔을때

    어떤 작업을 해야하는지 알아야 한다

 

 

@Proces States

프로세스는 세가지 state(상태)를 가지는데 각 상태에서 전이가 일어난다.

Process States

1) Running

-CPU를 잡고 명령어를 수행중인 상태이다.

 

2) Ready

-CPU를 기다리는 상태이다. 메모리 등 다른 조건을 모두 만족한 상태이다.

-Ready 상태에서는 프로세스가 메모리에 존재한다

-모든게 준비되어있지만 다른 프로세스의 종료를 기다리는 상태.

 

3) Blocked

-CPU를 주어도 당장 명령어를 수행할 수 없는 상태.

-Running 상태에서 입출력을 요청하면, 입출력은 오래 걸리기 때문에 그동안 CPU를 놀리지않고 다른 process에게 넘긴다.

-read나 write가 완료되면 CPU쪽으로 interrupt signal이 가게되는데, 현재 프로세스의 수행을 멈추고 이를 먼저 처리한다. 그러면 Blocked 상태에 있는 놈을 Ready로 다시 돌린다.

 

 

@Process의 주소공간(Address Space)

-한 프로세스는 3개의 segment들을 갖는다

1. Text: 명령문. 프로그램 코드.

2. Data: static variable이 존재.

3. Stack: automatic storage duration variable; 함수 시작 때 생성되고 함수 끝나면 제거되는...

Address Space of a Process

 

@Process Table(=Process Control Block; PCB)

-프로세스가 나중에 수행되야 할 때를 대비해서 저장되어야 하는 정보들이 들어간다.

-운영체제가 프로세를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세으의 상태 정보를 저장하는 구조체이다.

*프로세스 상태 관리와 문맥교환(context swtiching)을 위해 필요하다.

*PCB는 프로세스 생성 시 만들어지며 주 기억장치에 유지된다.

*프로세스마다 이를 가진다!

아래 표는 Process Table에 들어있는 정보들이다.

Process Table에 있는 정보들

 

@Process Creation

*기존 프로세스가 생성 시스템콜을 실행하도록 해야 새 프로세스를 생성할 수 있다

-프로세스가 생성되는 상황들

1. System initialization

ex) Daemons: 데몬이란 멀티태스킹 운영체제에서 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업으 하는 프로그램을 말한다. 윈도우 서비스의 개념.

2. Execution of a process creation system call by a running process

ex) fork system call

3. User request to create a new process

ex) Typing a command or clicking an icon

4) Initiation of a batch job

ex) Large mainframes

 

@Proces Termination

-프로세스가 종료되는 상황들

1. Normal exit(자발적)

-exit

2. Error exit(자발적)

-이상한 매개변수의 입력

3. Fatal error(비자발적)(치명적 오류)

-주로 프로그램 버그때문.

-위반되는 명령어, 존재하지 않는 메모리 참조, 0으로 나누기 등에 의해 발생.

4. Killed by another process(비자발적)

-kill

 

 

@System Calls for Process Management

1. 프로세스의 생성 / 종료

2. 한 프로그램의 다른 프로세스를 overlay

3. child process가 종료되길 기다림

4. 메모리를 더 요청하거나 / 사용하지 않는 메모리를 돌려줌

 

 

@Interrupt를 처리하는 방법

-어느 장치에서 interrupt를 걸었는지 알 수 있다

-"interrupt service routine" -> 이것에 대한 주소를 verctor로 표현...

When an interrupt occurs

'운영체제' 카테고리의 다른 글

운영체제 - Interprocess Communication  (0) 2023.01.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함