운영체제(OS)의 메모리 및 프로세스 관리
운영체제는 프로그램이기 때문에 메모리 공간을 차지합니다. 운영체제가 어떻게 프로세스를 관리하고, 시스템 자원을 효율적으로 사용하는지 알아보겠습니다.
1. 운영체제의 제어 구조
운영체제는 시스템의 프로세스와 자원 상태를 관리하기 위해 다양한 테이블을 사용합니다.
운영체제 테이블의 종류
- Memory Table
- I/O Table
- File Table
- Process Table
각 테이블은 시스템 자원의 현재 상태에 대한 정보를 포함하고 있습니다.
1.1 Memory Tables
- 주 메모리 할당: 특정 메모리 주소 범위가 어느 프로세스에 할당되었는지 기록.
- 보조 메모리: 하드디스크의 특정 주소 범위가 어느 프로세스에 할당되었는지 기록.
- 공유 메모리 접근 보호 속성: 공유 메모리 영역에 대한 접근 권한 정보.
- 가상 메모리 관리 정보: 가상 메모리를 관리하는 데 필요한 정보.
1.2 I/O Tables
- I/O 장치의 상태: 사용 가능 여부와 할당된 프로세스 정보.
- I/O 작업의 상태: 현재 진행 중인 I/O 작업의 상태와 메모리 주소.
- I/O 전송의 소스 또는 목적지 위치: 메모리와 I/O 버퍼 간의 데이터 전송 위치.
1.3 File Tables
- 파일 존재 여부: 모든 파일이 이 테이블에 기록.
- 보조 메모리의 위치: 파일이 하드디스크의 어느 위치에 저장되어 있는지 정보.
- 파일 상태: 파일의 현재 상태, 열기 가능 여부, 읽기/쓰기 위치.
- 파일 속성: 파일 크기, 소유자 정보 등.
1.4 Process Tables
- 프로세스 관리에 필요한 속성: 프로세스 ID, 메모리 위치 정보 등.
- 프로세스 이미지: 프로세스의 전체 정보를 포함한 이미지. 프로세스 이미지에는 코드, 데이터, PCB, 스택이 포함됩니다.
2. 프로세스 제어 블록(PCB)
프로세스 제어 블록은 운영체제가 프로세스를 관리하는 데 필요한 모든 정보를 포함하고 있습니다. 주요 정보는 다음과 같습니다:
2.1 프로세스 식별 정보
- 프로세스 식별자(Process ID): 시스템 내에서 프로세스를 식별하는 고유 ID.
- 부모 프로세스 식별자: 프로세스를 생성한 부모 프로세스의 ID.
- 사용자 식별자: 프로세스를 실행한 사용자의 ID.
2.2 프로세서 상태 정보
- 사용자 가시 레지스터: 사용자 모드에서의 레지스터 값.
- 제어 및 상태 레지스터: 프로그램 카운터(PC), 프로그램 상태 워드(PSW) 등.
- 스택 포인터: 현재 스택의 위치를 가리키는 포인터.
2.3 프로세스 제어 정보
- 스케줄링 및 상태 정보: 프로세스의 우선순위 및 현재 상태.
- 메모리 관리 정보: 프로세스가 사용하고 있는 메모리 영역.
- 자원 소유 및 이용 정보: 프로세스가 소유한 자원과 사용 현황.
- 프로세스 권한: 프로세스가 가진 접근 권한.
3. 운영체제의 주요 기능
3.1 프로세스 관리
- 프로세스 생성 및 종료: 프로세스 생성과 종료 관리.
- 프로세스 스케줄링: 어떤 프로세스를 실행할지 결정.
- 프로세스 동기화 및 통신: 프로세스 간의 동기화와 통신 지원.
3.2 메모리 관리
- 주소 공간 할당: 프로세스에 메모리 할당.
- 스와핑: 메모리와 디스크 간의 스와핑.
- 페이지 및 세그먼트 관리: 메모리 단위 관리.
3.3 I/O 관리
- 버퍼 관리: I/O 작업을 위한 버퍼 관리.
- I/O 채널 및 장치 할당: 프로세스에 I/O 자원 할당.
3.4 지원 기능
- 인터럽트 처리: 인터럽트 발생 시 처리.
- 회계: 자원 사용 기록.
- 모니터링: 시스템 상태 모니터링 및 문제 해결.
4. 프로세스 생성 과정
프로세스 생성 과정은 다음과 같습니다:
- 프로세스 식별자 할당: 새로운 프로세스에 고유 ID 부여.
- 프로세스 공간 할당: 메모리 공간 할당.
- 프로세스 제어 블록 초기화: PCB 생성 및 초기화.
- 연결 설정: 새로운 프로세스를 적절한 큐에 추가.
- 데이터 구조 확장: 필요한 초기 자원 할당 및 데이터 구조 확장.
5. 프로세스 스위칭
프로세스 스위칭은 실행 중인 프로세스를 중단하고 다른 프로세스를 실행하는 과정입니다. 주요 단계는 다음과 같습니다:
- CPU 상태 저장: 현재 프로세스의 CPU 상태 저장.
- PCB 업데이트: 프로세스 제어 블록 내용 업데이트.
- 적절한 큐로 프로세스 이동: 프로세스를 적절한 큐로 이동.
- 다음 실행 프로세스 선택: 다음 실행할 프로세스 선택.
- PCB 업데이트 및 메모리 데이터 구조 업데이트: 선택된 프로세스의 PCB 업데이트 및 메모리 데이터 구조 업데이트.
- 프로세스 상태 복원: 저장된 CPU 상태 복원.
이와 같은 과정을 통해 운영체제는 시스템 자원을 효율적으로 관리하고, 안정적으로 프로세스를 실행할 수 있습니다.
'운영체제' 카테고리의 다른 글
운영체제 Chatper 3 3-3 Process (0) | 2024.06.25 |
---|---|
운영체제 Chapter 3-1 Process (0) | 2024.06.25 |
운영체제 Chapter2 2-2 (0) | 2024.06.23 |
운영체제 Chapter2 2-1 (0) | 2024.06.23 |
운영체제 chapter1 - 2-2 (0) | 2024.06.22 |