:_: 2022. 3. 2. 15:56

 

 

프로그램 : 바이너리, 코드 이미지, 응용프로그램, Application, 또는 실행 파일

프로세스 : 실행 중인 프로그램(메모리 적재 + 프로세스 상태 정보(PCB) 포함)

스레드

  • 리눅스 프로세스는 기본 스레드 포함
  • 싱글 스레드 프로세스 : 기본 프로세스
  • 멀티 스레드 프로세스 : 여러 스레드 존재

 

프로세스 ID

프로세스 ID pid 라고 얘기한다.

 1) 각 프로세스는 해당 시점에 unique한 pid를 가짐

 2) pid 최대값은 32768

 3) 부호형(signed) 16비트 정수 값 사용

 

최근 할당된 pid 가 200 이라면 그 이후는 201, 202 식으로 할당 : 1씩 증가하면서 할당

 

만약 pid값이 max 값인 32768을 넘어가게 되면 맨 처음으로 넘어가서 1부터 시작하여  아직 사용하고 있지 않은 pid값을 할당. 여기서 중요한 프로세스 id값은 unique해야된다는 것이다.

 

프로세스 계층

 

1. 최초 프로세스: init프로세스, pid1

2. init프로세스는 운영체제가 생성

→ 운영체제가 처음에 부팅하면 최초로 프로세스를 하나 띄어준다.

→ 그 프로세스가 init프로세스이고 pid값은 1 가지게 된다.

→ 프로세스는 컴퓨터 종료할까지 실행이 상태로 있는다. 딱히 하는 일은 없음

→ 그 이후 만들어지는 프로세스는 init프로세스 복사해서 프로세스를 만든다.

3. 다른 프로세스는 또다른 프로세스로부터 생성(부모 프로세스, 자식 프로세스)

4. ppid값이 부모 프로세스의 pid를 뜻함. 프로세스는 부모 프로세스 정보도 가지고 있음, 값을 ppid 저장.

 다른 프로세스는 반드시 독단적 생성 x

다른 프로세스 공간 카피해서 해당 공간에 실행 이미지를 덮어씌우는 형태로 만드는 것이 일반적

 

→ 자식 프로세스가 다른 자식 프로세스를 만들 있음

 

실습

ppid값 확인해보기

 

프로세스와 소유자(owner) 관리

 

1. 리눅스 내부에서는 프로세스의 소유자(사용자)와 그룹을 UID/GID (정수)로 관리

2. 사용자에게 보여줄 때에만 UID와 사용자 이름 매핑정보를 기반으로 사용자 이름으로 제공

 

파일:inode

프로세스:pid

소유자 : UID

그룹 : GID

 

inode, pid, UID, GID 정수. 컴퓨터는 숫자에 강하므로 숫자로 관리

but, 사용자는 string 이름으로 

이 정보는 아래의 명령을 입력하면 알아볼 수 있다.

사용자의 패스워드를 관리하는 파일인데 여기에 UID와 GID의 정보를 알 수 있다.

sudo vi /etc/passwd

 

/etc/passwd 확인하기

 

프로세스 관리 관련 시스템

사전작업 : 우분투 리눅스에 gcc설치 (+ vi에디터/한글 설정) gcc 설치해야 c프로그램을 만들어서 컴파일 있음.

 

getpid(), getppid()

- getppid()는 현재 이 함수를, 시스템콜을 호출하는 프로세스의 부모 프로세스의 아이디를 알아오는 시스템콜

 

 

 

 

제로베이스 컴퓨터 공학 전공자 따라잡기 강의 정리한 내용입니다.
728x90