- cpu, 코어, 프로세스, 스레드, 스케줄링2024년 08월 06일
- chantleman
- 작성자
- 2024.08.06.:30
- 프로그램 실행 → 프로세스 생성
- 스레드 생성
- 스케줄러가 프로세스와 스레드를 관리하고, 코어에 할당
- 코어에서 프로세스/스레드 실행
- 스레드/프로세스 종료
- 자원 관리 및 최적화
1. 프로그램 실행 및 프로세스 생성
- 프로그램 시작: 사용자가 프로그램을 실행하면, 운영 체제는 프로그램의 파일을 읽어 메모리에 로드합니다.
- 프로세스 생성: 프로그램이 메모리에 로드되면, 운영 체제는 이를 실행하기 위한 프로세스를 생성합니다. 이 프로세스에는 프로그램의 코드, 데이터, 스택, 힙 영역이 포함됩니다. 프로세스는 고유한 프로세스 ID(PID)를 부여받고, 실행을 위해 준비됩니다.
2. 스레드 생성
- 스레드 초기화: 각 프로세스는 최소 하나의 메인 스레드를 가지고 있습니다. 멀티스레드 프로그램인 경우, 추가적인 스레드들이 생성될 수 있습니다. 각 스레드는 독립적인 실행 경로를 가지고 있으며, 프로세스 내에서 메모리와 자원을 공유합니다.
3. 스케줄러의 역할
- 스케줄링: 운영 체제의 스케줄러는 시스템의 모든 프로세스와 스레드를 관리하고, CPU 자원을 어떻게 분배할지를 결정합니다. 스케줄러는 각 프로세스의 우선순위, 현재 상태(대기, 실행, 종료 등), 자원 사용량 등을 고려하여 스케줄링 결정을 내립니다.
- 프로세스 상태 관리: 스케줄러는 프로세스가 실행 가능한 상태인지, 대기 중인지, 실행 중인지를 추적합니다. 이는 프로세스 상태 테이블을 통해 관리됩니다.
4. 코어에서 실행
- 컨텍스트 스위칭: 스케줄러는 각 코어에 실행할 프로세스를 할당합니다. 여러 프로세스가 동시에 실행 가능한 경우, 스케줄러는 코어 간에 프로세스를 배분합니다. 만약 프로세스가 I/O 작업을 기다리는 동안 CPU를 사용하지 않는다면, 다른 프로세스가 그 코어에서 실행될 수 있습니다. 이 과정에서, 현재 실행 중인 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 불러오는 작업을 컨텍스트 스위칭이라고 합니다.
- 코어에서의 실행: 할당된 프로세스와 스레드는 코어에서 명령어를 실행합니다. 코어는 프로그램 카운터(PC)에 저장된 명령어 주소를 사용하여 다음 명령어를 읽고 실행합니다. 이 과정에서 산술 연산, 논리 연산, 메모리 접근 등이 이루어집니다.
5. 스레드 및 프로세스의 종료
- 스레드 종료: 스레드가 할당된 작업을 모두 완료하면, 종료되고 자원을 해제합니다. 멀티스레드 프로그램의 경우, 다른 스레드는 여전히 실행 중일 수 있습니다.
- 프로세스 종료: 프로세스 내의 모든 스레드가 종료되면, 프로세스 역시 종료됩니다. 운영 체제는 프로세스가 사용하던 메모리와 자원을 회수합니다.
6. 자원 관리 및 최적화
- CPU 시간 관리: 스케줄러는 CPU 시간을 공정하게 분배하고, CPU 자원의 최적 사용을 보장하기 위해 주기적으로 실행할 프로세스를 선택합니다.
- 부하 분산: 멀티코어 시스템에서는 스케줄러가 각 코어에 작업을 분산하여 부하를 균등하게 분배합니다. 이를 통해 성능을 최적화하고, 특정 코어에 과부하가 걸리지 않도록 합니다.
728x90'cs' 카테고리의 다른 글
CORS (Cross-Origin Resource Sharing), SOP (Same-Origin Policy) (1) 2024.11.26 Web server , WAS (0) 2024.10.15 프로그래밍 공통 1 (0) 2024.07.17 오버로딩, 오버라이딩 (0) 2024.07.15 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)