Task란
- task: 자원 소유권의 단위
- thread: 수행의 단위
- process: 동작중인 프로그램
- program: 디스크에 저장되어 있는 실행가능한 형태의 파일
test.c 는 'start' 라는 문자열을 출력한 후 5초 간 잠들었다가 'end' 라는 문자열을 출력한다.
// test.c
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf("start\n");
sleep(5);
printf("end\n");
return 0;
}
gcc를 이용하여 test.c 소스를 컴파일하여 test라는 이름의 바이너리 프로그램을 생성한다. test 는 Intel x86 계열의 CPU 에서 수행가능한 ELF(Executable Linking Format)의 실행 파일이다.
test를 백그라운드로 실행시키고 ps 명령을 통해 수행중인 프로세스를 살펴보면 test라는 프로세스가 있고 pid를 알 수 있다.
파일 형태로 존재하는 프로그램이 실행되기 위해서는 리눅스 커널로부터 CPU 등의 자원을 할당받을 수 있는 동적인 객체가 되어야 하는데 이 동적인 객체가 프로세스다. 프로세스는 동작중인 프로그램이며 커널로부터 할당받은 자신만의 자원을 가지고 CPU가 기계어 명령들을 실행함에 따라 끊임없이 변화하는 동적인 존재다.
커널이 시스템에 존재하는 여러 개의 프로세스 중 CPU 라는 자원을 어느 프로세스에 할당해 줄 것인가를 결정하는 작업을 스케줄링이라고 부른다.
'linux' 카테고리의 다른 글
scheduler - cron 표현식 (0) | 2022.10.13 |
---|---|
리눅스 커널 구조 (0) | 2022.10.05 |
운영체제 동작 사례 (0) | 2022.10.04 |
Makefile tutorial (0) | 2022.09.28 |
Linux File System (0) | 2022.09.27 |