프로세스ID

2021. 3. 8. 14:55Computer(인강)/시스템 프로그래밍

728x90
반응형

안녕하세요 bannavi입니다^ㅅ^

오늘은 프로세스ID에 대해 공부해보도록 하겠습니다

바로 시작하겠습니다!

 

 

 

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

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

스레드 : 

1) 리눅스 프로세스는 기본 스레드 포함 

2) 싱글 스레드 프로세스 : 기본 프로세스

3) 멀티 스레드 프로세스 : 여러 스레드 존재

 

 

프로세스 ID :

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

2) pid 최대값은 32768

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

 

만일 pid값이 32768을 넘어가게 되면 그제서야 맨 처음으로 넘어가서 1부터 시작하여

아직 안쓰고 있는 pid값을 할당하게 해 놓았습니다.

여기서 중요한건 프로세스id값은 unique해야된다는 것입니다!

 

 

프로세스 계층

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

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

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

4. ppid값이 부모 프로세스의 pid를 뜻함

 

실습

 

ppid값 확인해보기

 

위 프로세스를 기반으로 아래 프로세스가 생성이 되었다.

 

 

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

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

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

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

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

sudo vi /etc/passwd

내부적으로 컴퓨터 운영체제가 프로그램에 따라서 소유자들을 따로 이렇게 만들어놓는 경우가 있습니다

또 특정한 데몬프로그램의 경우, 그 데몬프로그램을 처리하기 위한 별도의 소유자 계정을 생성하는 경우가 있기 때문에

이렇게 default로 굉장히 많은 모습이네요..

만약에 ubuntu를 찾고 싶으시다면.. 이렇게 입력해보세요

그럼 ubuntu가 있는쪽으로 커서가 넘어갑니다

 

ubuntu : 패스워드(shadow에 들어가있고 여기에 없어서 x로 표시) : UID : GID

마지막은 사용자가 로그인했을 때, 어떤 쉘 프로그램을 실행시킬건지 보여주는 것입니다.

다시 쉐도우를 입력해보겠습니다.

그리고 그 상태에서 방금처럼 /ubuntu를 입력해서 ubuntu가 있는쪽을 살펴보겠습니다

패스워드를 암호화된 형태로 저장한 데이터가 보입니다.

아마 여러분들은 패스워드가 따로 안나오고 아래처럼 *별표시가 될 것입니다.

 

/etc/passwd 확인하기

정리해보면 사용자명(아이디), 패스워드, 사용자ID(UID), 그룹ID(GID), 사용자정보, 홈디렉토리, 쉘환경 정보를 볼 수 있다는 것입니다!

 

 

 

 

 

 

728x90
반응형

'Computer(인강) > 시스템 프로그래밍' 카테고리의 다른 글

프로세스 생성(fork)  (0) 2021.03.08
프로세스ID 시스템콜  (0) 2021.03.08
ABI와 표준  (0) 2021.03.07
시스템콜과 API  (0) 2021.03.07
소프트링크 및 특수 파일  (0) 2021.03.07