Operating Systems Internals and Design Principles
William Stallings
Chapter04 쓰레드(Thread)
4.1 프로세스와 쓰레드
멀티쓰래딩
쓰레드 기능
4.2 쓰레등 유형
사용자 수준 쓰레드와 커널 수준 쓰래드
다른 배합
4.3 ‘멀티코어’와 ‘멀티쓰레딩’
멀티코어 상에서의 소프트웨어 ‘성능’ !!! (성능 고려하며 다시 재조립)
==기타
프로세스는 디스크의 프로그램을 매모리에 적재하고 실행한 상태.
하나의 프로그램은 여러개의 프로세스를 중복생성할 수 있기에 프로세스는 프로그램의 인스턴스라고 정의할 수 있다.(객체지향프로그래밍에서도 인스턴스 개념이 나온다)
프로세스의 특징
‘라이프사이클’을 갖는다 - 생성, 실행, 대기, 중지, 종료
‘고유아이디’를 갖는다 - 부모프로세스와 자식프로세스의 관계를 맺으며 우선순위와 프로세스의 상태를 갖는다
‘시간정보’를 갖는다 - 생성시간, 시스템실행시간, 사용자실행시간, 주기적 이벤트 발생 타이머 등
‘리소스 정보’를 갖는다 - 사용 가상 메모리, 프로세스 컨텍스트, 파일 핸들 정보 등
프로세스의 유형
(1) 최상위 프로세스
(2) 부모 프로세스, 자식 프로세스
(3) 고아 프로세스, 좀비 프로세스
(4) 데몬
최상위 프로세스:
부트로더에 의해 리눅스의 초기화를 위해 가장 먼저 실행하는 프로세스이며 커널이 직접 시작한다.
항상 PID는 1이다.
CentOS에서 파일위치는 /usr/lib/systemd/systemd
자식 프로새스의 PID는 PID라 하고
부모 프로세스의 PID는 PPID라고 한다.
자식프로세스가 부모프로세스를 잃어버렸을때 즉 부모 프로세스가 강제종료 되었을때를 의미한다.
고아 프로세스의 부모프로세스는 Init 프로세스로 변경된다.
자식프로세스가 종료될 때 부모프로세스가 wait() 시스템 콜 등으로 자식 프로세스의 종료 코드를 회수하지 못한 경우 -> 좀비 프로세스가 된다:
프로세스 유형
메모리 공간에 따른 유형 - 사용자 프로세스, 커널 프로세스
프로세스 성격에 따른 유형 - 대화형 프로세스(터미널 등 사용자와 직접 반응하는 프로세스), 배치(미리 정해진 작업을 순서에 따라 실행)
5-2 프로세스 동작원리
(1) 프로세스 생성
(2) 프로세스 제어
(3) 프로세스 중지
(4) 프로세스 상태
(5) 프로세스 구조
5-2 프로세스 동작원리
(1) 프로세스 생성
1-3. fork()와 exec()를 통한 프로세스 생성과정
프로세스가 생성하고 종료하는 과정을 보면 fork()를 통해 부모프로세스를 복제하여 자식프로세스가 생성되고 exec()호출을 통해 자식프로세스의 프로그램으로 ’교체‘된다. 자식프로세스가 exit()를 호출하면 부모프로세스는 wait()시스템 콜을 통해 자식프로세스의 종료코드를 회수한다.
이어서..
'운영체제' 카테고리의 다른 글
[운영체제] 컴퓨터 파일 시스템의 타임스탬프 (0) | 2023.03.21 |
---|---|
[Linux] 리눅스 마스터 공부 (0) | 2023.03.11 |
[운영체제] 커널(Kernel) (0) | 2023.01.14 |
[메모] 컴파일, 빌드, 링크 (0) | 2020.09.20 |
[운영체제] 파일시스템 (File System) (0) | 2020.09.08 |