12-(1) Process 의 개요.

2018. 11. 20. 13:51임베디드sw공학

1, Processese

 1) 개념 : porcess 는 실행되고 있는 프로그램의 instance(상태)이다.

'program' 와 'processor'(CPU) 랑 다른 의미이다. 

 2) 프로세스는 2개의 주요 abstraction(추상화)를 제공한다.

   a) logical control flow - 프로세스들 간에서 빠르게 '스위칭'을 통하여 이를 제공하여 준다.

여러개의 프로그램을 프로세스는 혼자 CPU를 사용하는 듯한 착각을 준다.

   b) private virtual address space - 가상 메모리 시스템이 예전의 프로세스 내용을 저장하고 새로운 프로세스의 내용을 읽어준다. 

이번에는 프로세스가 혼자 메인 메모리를 다 쓰는 듯한 추상화를 제공한다.

 

 

2, Context Switching

  - Control flow을 이런 작업한다.

 

 

 

3, Process States - 프로세스는 총 6가지의 상태를 가진다.

 

 1) Idle : 프로세스가 생성되었지만 아직 CPU에서 할당되지는 않고 초기화(Initialize)하는 과정이다.

 2) Runnable : 실제로 CPU에서 돌아가는 상태는 아니지만, 준비가 완료된 상태이다.

 3) Running : 현재 CPU를 사용하는 프로세스가 없다면, 이제 실제 CPU에서 돌아가는 상태이다. 

 4) Sleeping : 프로세스는 계속해서 running 상태는 아니다. 이것은 특정 이벤트가 발생하기전까지 기다리는 상태이다. 기다리고 있다가 만약 이벤트가 발생한다면, 파일을 디스크에서 읽어와 다 읽는 다면 'Runnable' 상태로 되돌아게 된다.

 5) Suspended : 만약 어떠한 특정 시그널( ex) ctrl+c ) 받는다면, 프로세스를 중단(Suspended)상태로 들어간다. 이후 다시 특정 시그널을 받는다면, 다시 'Runnable' 상태로 돌아간다.

 6) 프로세스를 다쓰고 끝나기전에, 'Zombified'상태로 들어갈 수 있다.

 

* 실행 중: 프로세스가 현재 CPU를 사용하고 있습니다.
* 실행 가능: CPU를 사용할 수 있게 되면 바로 CPU를 사용할 수 있습니다.
* 절전: 프로세스가 이벤트가 발생하기를 기다리고 있습니다.
   예를 들어, 프로세스가 "읽기() 시스템 호출을 실행하는 경우 I/O 요청이 완료될 때까지 대기합니다.
중단됨: SIGSTOP 같은 신호에 의해 프로세스가 "동결"되었습니다.
SIGCONT 신호를 보낼 때만 재개됩니다.
   예를 들어 키보드의 Control-Z는 전경 작업의 모든 프로세스를 일시 중단합니다.


* 유휴: "fork() 시스템 호출에 의해 프로세스가 생성되고 있으며 아직 실행할 수 없습니다.
* 좀비화됨: 프로세스가 종료되었지만 아직 종료 코드를 부모에게 반환하지 않았습니다.
 부모로부터 "대기() 시스템을 사용하여 반환 코드를 수락할 때까지 과정이 좀비 상태로 남음

 

 

4, Process Composition - 프로세스의 구성요소

 

# user mode에서 사용하는 부분.

 1) a code area :  프로세스란 '실행될 프로그램이 메모리에 로드되어 수행하는 것.' 이다. 프로그램의 코드가 메모리에 탑재되는 것. text라고도 한다.

 2) a data area :프로그램이 사용할 변수들이나, malloc()등으로 Heap에 할당 받은 것들을 말한다.

 3) a stack area : 프로그램이 변수를 호출하면 stack에 data가 쌓이게 된다.

 

# kernel mode에서 사용하는 부분.

 4) a user area : 해당 프로세스의 정보(housekeeping information)를 가지고 있는 것이다.

 5) page tables : 프로세스가 사용하는 메모리의 정보를 가지고 있는 것이다.

 

  4 -2, 리눅스 위 프로세스이 Typical memory layout

   1) 보통 4G정도 된다. (1G는 Kernel에 맵핑, 나머지는 user에 맵핑 된다.)

   2) 1개의 프로세스마다 이런 메모리 맵을 갖는다.

   3) 프로세스마다 가지고 있다면 많은 메모리를 사용할 것이고 큰 공간이 필요할 것이다. 그러나 우리의 컴퓨터의 메모리를 한정되어 있다 그럼 어떻게 사용할까?

 

 

 

5, The Process Table - 각각의 프로세스마다 한개의 엔트리를 가지고 있다.

  1) PID

  2) PPID

  3) UID

  4) GUID

  5) state positoin(code, data, stack, user)

 

 

 

 

'임베디드sw공학' 카테고리의 다른 글

9.시그널  (0) 2018.11.27
12 - (3) fork(), execve(), exit(), wait()  (0) 2018.11.20
12 -(2) process create  (0) 2018.11.20
7. 리눅스시스템 프로그래밍: File I/O  (0) 2018.11.06