Process란 무엇인가에 대해 알아보겠습니다.
프로세스란 이름은 정말 많이 들어보셨을테고, 무엇인지에 대해서도 많이 아시기 때문에
여기서는 간단하게 한번 더 Remind하는 시간을 가지겠습니다.
프로세스를 많은 사람들이 실행 중인 프로그램이라고 알고 있습니다.
맞는 말입니다. 틀린 말이 아니죠. 프로세스는 사용 중인 파일, 데이터, 프로세서 상태, 메모리 영역 주소 공간, 스레드 정보, 전역 데이터가 저장 된 메모리 부분 등 수 많은 자원을 포함하는 개념입니다.
종종 스케줄링의 대상이 되는 작업(task)라고 불리기도 한답니다.
프로세스는 최소 하나의 스레드를 가지고 있습니다. UNIX 시스템에서는 하나의 프로세스는 하나의 스레드 만을 가지고 있었지만, 리눅스 시스템에서는 하나의 프로세스가 하나의 스레드만 가질 필요는 없습니다. 여러 스레드로 구성된 프로세스를 생성할 수 있다는 말이죠.
그럼 리눅스 커널에서는 프로세서에 task로 무엇을 할당을 하게 될까요? 프로세서에 할당되는 task는 프로세스가 아닌 스레드입니다. 리눅스에서는 스레드와 프로세스의 구분이 크지 않습니다.
그저 스레드를 조금(?) 특별한 프로세스로 취급할 뿐이죠.
프로세스는 부모가 생성함으로써 그 삶을 시작하게 됩니다. 즉 혼자 스스로 창조 될 수 는 없습니다.
항상 부모가 존재하고, 그 부모에 의해 자식 프로세스가 생성 되는 것입니다.
여기까지가 간단한 프로세스에 대해 주저리주저리 떠들어 봤는데요, 다음부터는 프로세스에 대해 좀 더 구체적으로 한번 파고 들어가 보겠습니다.
'Linux > Kernel Analysis' 카테고리의 다른 글
[Linux Kernel] 프로세스 상태 분석 (0) | 2014.07.17 |
---|---|
[Linux Kernel] Process - Task struct(프로세스 서술자) (0) | 2014.07.06 |
[Linux Kernel] Kobject에 대하여 (0) | 2014.06.27 |
[Linux Kernel] 리눅스 커널 Configuring (0) | 2014.06.27 |
sysfs (0) | 2014.06.23 |