교대최소제곱법
[운영체제 part 1] 프로세스 본문
모든 프로그램은 실행을 위해 자원을 필요로 한다
커널 영역에 적재되는 프로그램
오류메세지에 대한 깊은 이해가 가능하다
커널 : 핵심적인 서비스를 담당하는 부분
유저 인터페이스는 커널이 아님
이중모드 : 플래그로 구별 가능, 사용자모드 vs 커널모드
시스템 호출 : 커널모드로 전환하기 위한 방법 → 소프트웨어 인터럽트
- 프로세스(실행 중인 프로그램) 관리
- 자원 접근 및 할당 : cpu 스케쥴링, 메모리(페이징, 스와핑), 입출력장치
- 파일 시스템 관리
프로세스
프로세스 제어 블록 PCB : 프로세스 관련 정보를 저장하는 자료 구조 → 커널 영역에 저장
- 프로세스 ID (PID)
- 레지스터 값 : 자신의 실행 차례가 오면 이전에 사용한 레지스터 값을 복원해 실행을 재개하기 위해 저장
- 프로세스 상태
- cpu 스케쥴링 정보
- 메모리 정보
- 사용한 파일과 입출력장치 정보
문맥교환 : 프로세스 교환
- 중간 정보(문맥) 백업
- 다음 프로세스의 중간 정보 복구
그렇다면 사용자 영역에는 어떻게 저장될까?
영역을 나누어서 저장 됨
- 코드 영역 : 텍스트 + 쓰기 금지
- 데이터 영역 : 전역변수가 저장됨
- 힙 영역 : 프로그래머가 직접 할당할 수 있는 공간
- 스택 영역 : 데이터가 일시적으로 저장 (매개변수, 지역변수)
힙, 스택 영역은 크기가 가변적이기 때문에 메모리를 공유하는 느낌임
프로세스 상태 : 생성, 준비, 실행, 대기, 종류
준비 → 실행 : 디스패치
실행상태에서 시간 모두 사용 → 준비 상태
실행 도중 입출력장치 인터럽트 → 대기 상태 → 입출력 완료시 → 준비 상태
프로세스 계층 구조 : 자식 - 부모 계층
프로세스 생성 : 복제와 옷 갈아입기 Fork-exec
- fork를 통해 자신의 복사본으로 자식 프로세스 생성
- exec를 통해 자신의 메모리 공간을 새로운 프로그램으로 덮어써라
스레드(소프트웨어 스레드) : 실행 흐름의 단위
스레드의 구성 요소 : 실행에 필요한 최소한의 정보
스레드는 자원을 공유함!! → 프로세스와 다른 점이네 근데 리눅스 창시자는 스레드와 프로세스는 비슷하다고 말함 → 요즘 cpu는 스레드 단위로 하기 때문
멀티 프로세스 vs 멀티 스레드 ?
프로세스는 남남, 스레드는 같은 자원을 공유
스레드는 공유하기 때문에 협력과 통신에 유리 but 문제가 생기면 전체 문제
- 물론 프로세스 간 통신을 통해 공유를 할 수는 있음 or 파일을 통한 통신
'CS 기초 > 운영체제' 카테고리의 다른 글
[운영체제] 운영체제와 cpu 아키텍쳐의 관계 그리고 펭귄 (2) | 2023.12.04 |
---|---|
[메모리 할당] 디스크 조각모음과 단편화 (1) | 2023.11.15 |
[운영체제 part 4] 파일과 디렉토리 (0) | 2023.09.08 |
[운영체제 part 3] 메모리 할당 (0) | 2023.09.08 |
[운영체제 part 2] CPU 스케쥴링 (0) | 2023.09.08 |