운영체제의 역할과 구조
운영체제의 역할
1. CPU 스케줄링과 프로세스 관리
- cpu 소유권을 어떤 프로세스에게 할당할지 결정.
- 프로세스의 생성과 삭제, 자원 할당 및 반환 관리.
- 스케줄링 알고리즘 : FIFO, SJF, RR, Priority Scheduling 등
- 문맥 교환(Context Switching): 현재 프로세스 상태를 저장하고, 새로운 프로세스 상태를 로드하는 과정
- 프로세스 간의 공유 자원 접근과 통신 관리.
2. 메모리 관리
- 한정된 메모리를 어떤 프로세스에게 얼만큼 할당할지 관리
- 메모리 영역의 할당과 해제.
- 각 메모리 영역 간의 침범 방지
- 가상 메모리 기능을 통해 메모리 효율성 극대화
3. 디스크 파일 관리
- 디스크 파일의 저장 및 관리
- 파일 시스템 종류: FAT, NTFS, ext4
- 파일의 생성, 수정, 제거, 공유, 복구
- 주기억장치와 보조기억장치 간의 파일 전송
- 파일 디스크립터: 파일과의 연결을 유지하는 데이터 구조
- 디렉토리 구조: 트리 구조, 그래프 구조
4. I/O 디바이스 관리
- 마우스, 키보드 등의 I/O 디바이스와 컴퓨터 간 데이터 전송 관리
- 시스템의 자원, 하드웨어를 관리하여 응용 프로그램이 하드웨어를 사용할 수 있게 함
- 디바이스 드라이버를 통해 다양한 하드웨어를 추상화 및 관리
5. 네트워킹
- 네트워크 프로토콜(TCP/IP 등)을 지원하여 인터넷 연결 및 네트워크 기능 제공
- 다양한 네트워크 프로토콜을 지원하여 응용 프로그램의 네트워크 사용을 지원
6. 사용자 관리
- 다중 사용자 환경을 지원하여 각 사용자 계정을 관리.
- 사용자별 프라이버시와 보안을 위한 개인 파일 접근 권한 관리
- 파일이나 시스템 자원에 대한 접근 권한 지정 기능 제공
운영체제의 구조
운영체제는 HW와 사용자 프로그램 간의 interface 역할을 한다.
GUI가 없는 CUI 기반의 리눅스 서버도 존재한다.
시스템 콜
- 운영체제가 커널에 접근하기 위한 인터페이스
- 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용
- 유저 모드에서 커널 모드롤 전환되어 실행되며, 컴퓨터 자원에 대한 직접 접근을 차단하고 프로그램을 보호
- (시스템 콜 유형: 파일 조작(open, read, write), 프로세스 제어(fork, exec, wait), 디바이스 조작(ioctl))
modebit
- 유저 모드(1)와 커널 모드(0)을 구분하는 플래그
- 유저 모드에서는 자원 접근이 제한되고, 커널 모드에서는 모든 자원에 접근 가능합니다.
커널 : 운영체제의 핵심 부분. 시스템콜 인터페이스를 제공하며 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할을 한다.
컴퓨터의 요소
CPU (Central Processing Unit)
- 구성 : 산술논리연산장치(ALU), 제어장치(CU), 레지스터
- 인터럽트에 의해 명령어를 해석하고 실행한다.
제어장치 (Control Unit)
- 프로세스 조작 지시
- 입출력 장치 간 통신 제어, 명령어 읽고 해석
레지스터
- CPU 안의 임시기억장치
- 연산 속도가 메모리보다 빠름
- 데이터 흐름 : SSD/HDD -> RAM -> Cache -> Register
산술논리연산장치 (ALU)
- 산술 연산과 논리 연산을 처리하는 디지털 회로
인터럽트
기존 cpu가 모든 권한을 가지고 모든 장치를 관리했다.
터치스크린을 터치할 때까지 while{}처럼 계속해서 대기했기 때문에 비용이 많이 발생했고 비효율적이었다.
이후 인터럽트 방식을 사용하면서 입출력 디바이스도 권한을 갖게 되었다.
마치 onClick()처럼 입출력 디바이스도 이벤트에 대응할 수 있다.
- CPU가 현재 수행 중인 작업을 중단하고, 예기치 않은 이벤트나 특정 신호에 대응하기 위해
즉시 인터럽트 핸들러(또는 인터럽트 서비스 루틴)을 실행하는 매커니즘 (운영체제가 관리)
- 과정
1. 인터럽트 발생
2. 현재 작업 상태 저장
3. 인터럽트 서비스 루틴 처리
4. 이전 상태 복구 및 재개
ex)
1. 사용자 키보드 눌렀을 때, 키보드 컨트롤러 인터럽트 발생시킴
2. CPU는 현재 실행중인 프로그램의 상태(레지스터, 프로그램 카운터 등)을 저장하고 (나중에 원래 작업을 재개할 때 필요함)
인터럽트 핸들러로 이동
3. 키보드 입력 처리하는 인터럽트 핸들러 실행
ex) 키보드에 입력된 데이터를 메모리의 특정 위치에 저장하거나, 사용자에게 출력
4. 루틴 완료, 이전 상태 복구 및 재개, CPU는 저장된 작업 상태 복구.
DMA 컨트롤러 (Direct Memory Access Controller)
- I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
- CPU의 부하를 줄이고, 동시에 작업을 방지
메모리
- 전자회로에서 데이터, 상태, 명령어 등을 기록하는 장치(RAM)
- CPU는 계산, 메모리는 기억 담당
타이머
- 프로그램의 실행 시간을 제한하여 효율적으로 관리
디바이스 컨트롤러
- 컴퓨터와 연결된 I/O 디바이스를 관리하는 작은 CPU
운영체제란 무엇인가?
정의
- 운영체제(OS, Operation System)은 HW와 SW 자원을 효율적으로 관리하고,
사용자와 하드웨어 간의 인터페이스를 제공하는 시스템 SW이다.
즉, 운영 체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.
OS와 어플리케이션
- 애플리케이션은 특정 운영체제에 맞춰 개발
- 운영체제가 제공하는 자원만 사용
운영체제의 종류
- Windows, Linux, UNIX, MS-DOS 등
- 단일 작업(MS-DOS)과 다중 작업(Windows, UNIX)으로 구분
- 단일 사용자(Windows)와 다중 사용자(UNIX, NT Server)로 구분
운영체제의 목적
- 처리능력 향상 (Throughput) : 일정 시간 내 시스템이 처리하는 일의 양
- 반환시간 단축 (Turnaround Time) : 작업 의뢰부터 완료까지 걸린 시간
- 사용 가능도 향상 (Availability) : 필요 시 사용 가능한 정도
- 신뢰도 향상 (Reliability) : 주어진 문제를 정확하게 해결하는 정도
운영체제의 기능
1. 자원 관리: 프로세서, 메모리, 입출력 장치, 파일 및 정보 관리
2. 자원 스케줄링
3. 사용자와 시스템 간 인터페이스
4. HW와 네트워크 관리
5. 데이터 관리 & 공유 기능
6. 오류 검사 & 복구
7. 자원 보호 기능
8. 입출력 보조 기능
9. 가상 메모리
운영체제 용어
- 멀티태스킹: 하나의 프로그램이 끝나기 전에 다른 프로그램이 시작 가능
- 멀티프로그래밍 : 메모리에 여러 프로그램이 동시에 올라가는 방식
- 시분할 시스템: CPU 시간을 분할하여 여러 작업을 처리
- 멀티프로세싱 : 여러 프로세스 동시에 실행
- 멀티코어 : 하나의 컴퓨터에 여러 CPU 코어가 존재
'CS' 카테고리의 다른 글
CS_운영체제_프로세스 & 스레드 (1) | 2024.06.13 |
---|---|
CS_운영체제_메모리 (0) | 2024.06.13 |
CS_네트워크_로드밸런싱 (0) | 2024.06.07 |
CS_네트워크_대칭키 vs 비대칭키 (0) | 2024.06.07 |
CS_네트워크_TCP 흐름제어 & 혼잡제어 (1) | 2024.06.03 |