학부 내용 정리/[ 2-1 ] 운영체제

[ OS ] 1. Processes

haena02 2022. 4. 17. 01:55
반응형

1. Program vs Process

1.1 program

- 컴파일하고 생긴 exe 파일, 디스크에 있는 여러 명령 및 정적데이터 

1.2 process

- 실행중인 프로그램

- 기계의 상태 (레지스터, 메모리, 열려있는 파일 목록 )

- 프로그램 하나를 여러번 실행하면 여러 프로세스 생성

 

 


 

2. Virtualization

이상은 서로 양보하며 잘 나눠쓰면 좋지만 현실은 독점하려고 한다. 운영체제는 virtualization을 통해 이상을 실현하려고한다.  가장 대표정은 방법은 Time sharing 이 있다.

 

2.1 Time sharing

- 실제로 물리적 CPU가 하나또는 몇개뿐일 때 가상 CPU가 존재한다는 착각을 하게 됨

- 사용자가 원하는 만큼 많이 동시에 프로세스를 실행시킬 수 있다.

- 기회비용 (CPU를 공유하면 각 CPU는 느리게 실행)

- Context Switch와 정책이 필요하다

 

2.2 Process State

1) Running - 프로세스 실행중

2) Ready - 프로세스를 실행할 준비가 되었지만 OS가 실행하지 않기로 결정

3) Blocked - 다른 사건이 일어나기 전까지 프로세스를 실행할 준비가 되지 않음 (I/O를 실행할때)

 

2.3 Process Control Blocks (PCB)

각 사용자의 프로세스는 사용자 모드 스택과 커널모드 스택이 있다. 스레드가 커널에 들어갈 때, 사용자 모드의 스택이 사용하는 모든 레지스터의 내용은 커널 모드 스택에 저장된다. 

아래의 코드는 kenel의 PCB 역할을 하는 /include/linux/sched.h 파일이다.

struct task_struct {
volatile long state; /* 프로세스 상태 */
void *stack; /* 스택의 위치 */
…
unsigned int cpu; // CPU 코어 번호
…
struct mm_struct *mm;  //memory virturation 을 위한 구조체
…
struct task_struct *parent; //fork 했을 때 부모
struct list_head children;  //fork 했을 때 자식의 linked list
…
struct files_struct *files;  //이 프로세스가 오픈한 파일들
…
}

2.4 Scheduling Queue

각 프로세스 상태에 따라 큐가 존재한다. (Run Queue, Ready Queue, Waiting Queue)

반응형

'학부 내용 정리 > [ 2-1 ] 운영체제' 카테고리의 다른 글

[ OS ] Address Spaces  (0) 2022.04.18
[ OS ] Multiprocessor Scheduling  (0) 2022.04.17
[ OS ] Multi-Level Feedback Queue  (0) 2022.04.17
[ OS ] 3. CPU Scheduling  (0) 2022.04.17
[ OS ] 2. Limited Direct Execution  (0) 2022.04.17