Process

Process 의 개념

Job 이라는 것은 실행할 프로그램 + 데이터 를 묶어서 Job 이라고 한다. 컴퓨터 시스템에 실행 요청 전의 상태이며 하드디스크에 들어가 있다.

이 Job 이 실행을 위해 시스템(커널) 에 등록된 작업이다. 시스템 성능 향상을 위해 커널에 의해 관리된다.

Process 는 실행중인 프로그램 이다

실행의 주체 이자 관리의 단위 프로세스를 Task 라고도 부른다

아직 미완료 -> 아래 영상 시청하여 채워넣기
참조 - 김덕수 :: 운영체제

프로세스 확인하기

작업관리자 - 실행중인 프로그램 이 프로세스 이다.

PCB (Process Control Block)

커널 공간 (Kernel Space) 내에 존재하며 각 프로세스들을 관리하기위한 정보가 담긴 블럭

Process 와 실행파일

CPU 가 실행 할 수 있는 코드가 있는데, 그것을 OpCode ( Operation Code ) 라고 한다. 그것을 연속해서 모아놓은 것이 실행 파일이다. 이 실행파일에는 코드만 들어 간것도 아니고, 메타데이터 같은 것도 많이 들어가는데,그래서 정해진 형식이 있는데, 실행 파일의 형식은 COFF 도 있고, 윈도우에서는 PE 가 있는데, 그래서 실행파일은 메타데이터와 형식 파일, 그리고 명령어 코드 로 이루어져 있다. 연산을 수행할 수 있는 명령들의 연속된 유한집합 체 이다.하나의 연산만 해서는 큰 의미를 발휘를 못하는데, 쭉 모아서 실행이 되었을 때 더 큰 유의미한 결과를 도출 할 수 있겠다. 이것이 하나의 연산 흐름을 만들것이고, 이 흐름을 문맥(컨텍스트)이 있다고 할 수 있다. 그리고 이 흐름이 바뀌는것을 컨텍스트 스위치 라고 한다. 프로세스라는 것도 문맥이 있는, 흐름을 갖고 있는 연속된 코드 덩어리를 하나의 형식으로 집합한것처럼 관리 가능한 체계로 만든것이 프로세스 다.

Process 와 VMS ( 가상메모리 공간 )

process 는 물리메모리 (Physical Memory) 를 직접 쓰지 못한다. OS 에서 물리 메모리를 추상화한 가상 메모리를 할당하여 이것을 쓰게 되는데, 이 가상 메모리는 RAM 과 HDD 의 공간으로 이루어져 있다. 이 가상메모리는 각각의 프로세스 마다 할당되며 00x00 부터 시작하는 주소를 가지고 있다. 하지만 실제 물리적 주소는 다르며, 프로세스는 이를 생각 하지 않는다. 가상 메모리 주소는 페이징 기법을 사용하여실제 물리 메모리 주소의 어느곳에 매칭된다. Process 에는 하나의 VMS ( 가상메모리공간 ) 이 부여되며이는 한 가구에 비유 될 수 있다. 비유하자면, VMS 는 ‘집’ 이라는 주거 공간이 될 수 있다. 집에는 가구의 구성원(thread)이 살고 있으며,각자 집(VMS)은 개인공간과 공용공간으로 나누어 질 수 있다,

개인공간(TLS) 은 사생활이 보호(Stack) 되는 공간이며, 구성원 (thread) 는 각자의 업무, 누군가는 세탁실에서 빨래를 하거나, 누군가는 부엌에서 요리를 하거나, 누군가는 거실에서 청소를 하는등각자의 개별 업무(연산)를 수행할 수 있다. 공용 공간은 모두가 사용할 수 있는 공용공간(Heap,Code,Data) 영역이다. 화장실이나 주방같이 누구나 사용할 수 있는 공간이지만 활용목적이 방과 비교해 매우 제한적이다. 게다가 여러 구성원(Thread) 가 같이 쓰다 보니까 한정된 자원을 서로 선점하기 위해 Race Condition(경쟁조건) 이 발생하며 이는 해결해주지 않으면 프로세스가 비정상적으로 종료될 수 있는 위험이 발생한다. 경쟁조건을 유발하는 주체들이, 동시에 무언가를 하려고 해서 생기는 경쟁조건 상황을 해결하는 매커니즘을 동기화 라고 한다.

MultiThread -> RaceCondition -> Synchronization

참조 - 최호성 :: 운영체제가 하는 일

Process 와 Thread

프로세스는 기본적으로 하나의 흐름(문맥)(flow, context) 이 있다. 이 흐름에는 하나의 Thread(쓰레드) 가 할당되어 연산을 수행한다 한 프로세스 내부에서 개별화된 흐름(코드의 실행) 이다. 이 개별화된 흐름은 각자 동시에 실행이 되고 2개 이상의 흐름이 있는 경우를 Multi Threading 이라고 한다 OS 는 각각의 프로세스마다 하나의 VMS ( Virtual Memory Space ) 를 할당한다. Process 에 속한 모든 Thread 는 Process 의 VMS 로 공간이 제약되며 Process 의 VMS 를 공유한다

-> Thread Page

Process 와 유저 권한

컴퓨터에는 여러 Process 들이 있다. 프로그램의 핵심 적인 부분을 담당하여 메모리에 상주하는 프로세스를Kernel 이라고 하며, 이들은 컴퓨터라는 국가 정부기관에 소속된 공무원으로 비유될 수 있다 그렇지 않은 프로세스는 상황에 따라 일시적으로 메모리를 점유했다가반환하는 프로세스들이 있다. Process 는 일종의 Pawn 캐릭터에 비유될 수도 있는데, 게임 세상에서 유저는 가상세상에서의 또하나의 자신을 생성하여 자신에게 유저의 의지를 전달하여 가상세상에서 활동하게 된다. 유저는 컴퓨터를 사용하기 위해처음에 로그인이라는 과정을 거치게 되며, 이 로그인은 Login Process 가 담당한다.Login Process 는 유저의 아이디와 비밀번호를 받아, 계정의 수준에 맞는 권한(root, guest)을 상속하는 Shell Process 를 제공하게 된다. 이 Shell Process 가 유저의 의지를 받아 움직이는 Pawn Character 와 같은 역할을 지니게 된다. Shell Process 는 유저의 의지를 마우스 커서나, 키보드 의 입력 등으로 받아Shell Process 의 권한을 상속하는 또다른 process 를 실행 함 으로서유저는 컴퓨터로 여러가지 일을 수행할 수 있다. 이는 또한 놀이동산에서 여러가지 놀이기구를 이용할 수 있는 티켓(권한)을주고 사는 것처럼 비유될 수 있다.