먼저 프로세스 관리에 대한 시스템 프로그래밍에 대해 알아보기 전에 프로세스에 대해 간단하게 알아 봅시다.
실제로 프로세스와 스레드 등은 리눅스 커널 분석에서 한번 알아보도록 자세히 알아보구요, 여기선 간단히 ^^
프로세스는 기본적으로 현재 실행중인 프로그램! 살아있는 프로그램! 을 말합니다.
그 말인 즉슨, 여러분들이 프로그램을 사용하고 싶을 때 더블 클릭이던, 엔터로 실행을 하던
그 프로그램이 동작하기 위해 창이 열리고 Memory, Hardware(음악 프로그램이라면 스피커가 되겠죠?)
등의 컴퓨터 자원(Resource)를 할당 받아 실행되고 있는 프로그램입니다.
기본적인 프로그램 들은 바이너리 형태로 디스크 같은 저장장치에 기록되어 있습니다.
언제든지 실행하면 컴파일되어 기록되어 있는 코드들이 수행되고 프로그램이 실행! 되는 것이죠,
그럼 스레드는 뭘까요? 리눅스에서 하나의 프로그래는 무조건 하나 이상의 스레드를 가집니다.
단순하게 작업이라고 생각하셔도 될 것 같네요. 싱글 스레드 프로세스는 프로세스 자체가 스레드 입니다.
멀티스레드 프로세스에서는 여러개의 스레드가 존재하며 각각의 작업(Task)를 가질 수 있습니다.
이러한 스레드는 프로세스 내부에 존재하기에 멀티스레드는 하나의 주소 공간을 공유하게 되지요,
그럼 프로세스들은 서로를 어떻게 구별할까요?
프로세스 간에는 고유의 번호가 있습니다. ID를 가지고 있는것이죠, 프로세스 ID 줄여서 PID라고도 하는
이 번호는 프로세스를 구별할 수 있는 식별자 역할을 합니다.
리눅스에서 프로세스의 최대 PID값은 32768입니다. 이 값이 최대값인 이유인 이유는 부효형 16비트 정수를
사용한 유닉스 시스템과의 호환성을 위해서입니다.
물론, 이 값을 변경하여 사용할 수도 있습니다. /proc/sys/kernel/pid_max 파일에서 값을 수정하면 호환성을
포기하고 값 이상의 PID값을 설정할 수 있습니다.
그럼 이러한 프로세스는 누가 실행하는 것일까요?
프로세스를 실행하는 것은 프로세스 입니다! 새로운 프로세스를 생성하는 프로세스를 부모 프로세스 라고 하며
생성된 프로세스를 자식 프로세스 라고 합니다.
그럼 프로세스가 프로세스를 실행한다면..? 가장 처음 PC가 부팅되었을 때 실행되는 가장 원조 프로세스도
있다는 말이 아닐까요? 그 녀석이 바로 Init 프로세스 입니다.
이 Init 프로세스를 실행하기 위해 PC에서는 또 다른 작업을 하지만, 여기서는 이 정도만 알아보겠습니다.
다음 포스팅에는 실질적으로 프로세스 관리를 위한 시스템 콜들에 대해 배워보고 간단한 예제 프로그램들을
함께 실행시켜 보겠습니다. ^^
'Linux > System Programming' 카테고리의 다른 글
[프로세스 관리] 2. 새로운 프로세스 실행 (0) | 2015.04.14 |
---|---|
[프로세스 관리] 1. 프로세스의 ID 얻기 (0) | 2015.04.12 |
[파일입출력] 6. 파일 안의 데이터 잘라내기 (0) | 2015.02.12 |
[파일입출력] 5. lseek()으로 파일 탐색하기 (0) | 2015.02.10 |
[파일입출력] 4. 동기식 입출력 (1) | 2015.02.04 |