<2025.3.20.목요일 수업>
!!여기도 마인드맵!!
📍1. 프로세스 정보 보기
1-1. Linux 쉘 명령으로 프로세스 정보 보기
1-2. Linux에서 C프로그램으로 PID와 PPID 알아내기
e.g.) 시스템 호출 함수 getpid(), getppid()를 이용하여 PID와 PPID를 얻어내는 C프로그램 작성하기
#include <stdio.h> // printf()를 사용하기 위한 헤더
#include <sys/types.h> // pid_t 타입을 정의하는 헤더
#include <unistd.h> // getpid(), getppid() 시스템 호출 선언
int main(void) {
pid_t pid, ppid; // PID를 저장할 변수들 선언
pid = getpid(); // ① 현재 프로세스의 PID 얻기
ppid = getppid(); // ② 부모 프로세스의 PID 얻기
// ③ 결과 출력
printf("프로세스 PID = %d, 부모 프로세스 PID = %d\n", (int)pid, (int)ppid);
return 0; // ④ 정상 종료
}
[출력 결과]
$ gcc-o pinfopinfo.c
$ ./pinfo
프로세스 PID = 31006, 부모 프로세스 PID = 30861
📍2. 프로세스 부모-자식 관계 알아보기
2-1. Linux 프로세스 목록에서 부모-자식 관계 확인
2-2. Linux에서 부모-자식 계층 관계 알아보기
📍3. 프로세스 생성 및 종료
3-1. 프로세스 생성
✔️ 시스템 부팅 과정에서 프로세스 생성
✔️ 로그인 시 쉘 프로세스 생성(bash, Windows explorer)
✔️ 응용프로그램 수행으로 생성
✔️ 수행 중인 프로세스가 자식 프로세스 생성
- Linux: fork() 시스템호출로 자식 프로세스 생성
- Windows: CreateProcess() 시스템호출로 자식 프로세스 생성
3-2. 프로세스 종료
✔️ C프로그램의 main()에서 return
✔️ exit() 시스템 호출
3-3. Linux에서 프로세스 생성과 종료 다이어그램
3-4. 프로세스 생성은 커널에서 이루어지며 다음 작업 진행
✔️ 새로운 PID 번호 할당
✔️ 프로세스 테이블에 새 항목 할당
✔️ PCB 자료구조 생성
✔️ 새로 할당된 프로세스 테이블 항목에 PCB 연결
✔️ 프로세스를 위한 메모리 공간 할당(코드, 데이터, 힙, 스택)
✔️ 할당받은 메모리 공간에 프로세스의 코드와 데이터 적재
✔️ PCB에 프로세스 정보 기록
✔️ PCB에 프로세스의 상태를 Ready로 표시하고 준비 큐에 삽입
3-5. L inux에서 프로세스 생성 예제 프로그램
3-6. fork()의 수행 과정
📍4. CPU 집중 프로세스와 I/O 집중 프로세스
4-1. CPU 집중 프로세스(CPU intensive process)
✔️ 작업이 대부분 계산 중심적인 일로 구성되어 수행의 많은 부분에 CPU를 사용하는 프로세스
e.g.) 배열 연산, 이미지 처리 등
4-2. I/O 집중 프로세스(I/O intensive process)
✔️ 작업의 많은 부분이 파일 입출력으로 구성된 프로세스
e.g.) 파일서버, 네트워크서버
'운영체제' 카테고리의 다른 글
[운영체제] 4. 스레드 관리 - (1) 스레드의 필요성과 개념 (0) | 2025.04.17 |
---|---|
[운영체제] 3. 프로세스 관리 - (4) 멀티프로세스 응용 프로그램 (0) | 2025.04.11 |
[운영체제] 3. 프로세스 관리 - (2) 커널의 프로세스 관리 (0) | 2025.04.11 |
[운영체제] 3. 프로세스 관리 - (1) 프로세스 개요 (0) | 2025.04.11 |
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (4) 커널과 인터럽트 (0) | 2025.04.09 |