-
운영체제Studying/CS 2023. 11. 13. 21:20
1. 운영체제(OS, Operating System)란
- 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층
하드웨어 ↔ 운영체제 ↔ 유틸리티 ┄ 응용프로그램 ┄ 사용자
2. OS의 역할
- CPU, 메모리 등 한정된 컴퓨터 시스템의 자원을 관리
- 사용자와 컴퓨터 간 인터페이스를 제공해 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경 제공
3. 대표적인 OS의 종류
- 윈도우(Windows)
- 맥OS(macOS)
- 리눅스(Linux)
- 유닉스(Unix)
4. 운영체제의 목적
한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결
- 처리 능력(throughput) 향상: 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킴.
- 반환 시간(turnaround time) 단축: 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축시킴.
- 사용 가능도(availability, 시스템 자원을 얼마나 빨리 제공할 수 있는가) 향상: 사용자가 컴퓨터를 사용해야 할 때 자원을 즉시 사용할 수 있게 함.
- 신뢰도(reliability, 시스템이 주어진 문제를 정확하게 푸는지) 향상: 입력 값에 대한 정확한 결과 값을 줄 수 있도록 함.
5. CPU와 메모리 구조
- CPU(Central Processing Unit, 중앙 처리 장치, 프로세서): 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행하는 컴퓨터의 뇌
- 메모리: 데이터를 저장하기 위한 기억장치
- 메모리의 종류
- 주 기억장치
- 메인 메모리
- 휘발성 메모리(전원 공급이 중단되면 저장된 정보가 사라짐)
- 일반적으로 RAM
- 보조 기억장치
- 비휘발성 메모리
- SSD(Solid State Drive), HDD(Hard Disk Drive) 등
- 주 기억장치
- 메모리의 계층 구조
CPU에서 빨리 접근할 수 있도록 나뉜 구조
메모리의 계층 구조 레지스터
(register)- CPU가 사용자 요청을 처리하는 데 필요한 데이터를 임시로 저장
- CPU 내부에 위치
캐시 메모리
(cache memory)- CPU와 RAM 사이의 속도 차이를 해결
- CPU 내부에 위치
RAM
(Random Access Memory)- 프로그램을 실행할 때 필요한 정보를 저장
- 휘발성 기억장치
하드 디스크
(hard disk)- 사용자가 필요한 데이터와 프로그램을 저장
- 비휘발성 기억장치
- 프로세스(process)
- 프로그램을 실행하면 OS가 디스크에 있는 프로그램을 메모리로 로드(공간을 할당)
- 이때 메모리에 로드한 프로그램을 프로세스라고 하며 CPU가 처리
- CPU는 하나의 프로세스만 처리
- 멀티 프로세스 환경에서는 OS가 스케줄링을 통해 CPU에 프로세스를 할당
6. 커널과 시스템 콜
- 커널(kernel)
- OS의 핵심 요소
- 다음과 같은 중요한 역할을 수행
- 컴퓨터 하드웨어와 프로세스의 보안
- 자원 관리: CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리
- 하드웨어 추상화
- 커널의 위치
- 커널 모드(kernel mode)와 사용자 모드(user mode)
- 운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 모드를 나눔.
- 커널 모드: 하드웨어에 직접 접근해 메모리, CPU와 같은 자원을 사용할 수 있음.
- 사용자 모드: 커널 모드의 자원에 접근할 수 없게 제한을 둠.
- 시스템 콜(system call)
- 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수
- 사용자 모드에서 실행된 프로세스가 자원에 접근하려면 시스템 콜을 호출해 커널에 요청해야 함.
- 커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환
- 시스템 콜을 사용해 할 수 있는 일
- 프로세스 제어
- 파일 조작
- 장치 관리
- 데이터의 유지 보수
- 통신
- 보호
- 시스템 콜의 호출 구조
- 시스템 콜의 대표적인 예
- 프로세스를 생성하는 fork()
- 부모 프로세스가 자식 프로세스의 수행을 기다리는 wait()
- 시스템 콜에서 커널에 매개변수를 전달하는 방법
- 매개변수를 CPU의 레지스터에 직접 전달: 매개변수의 개수가 레지스터의 개수보다 많은 경우에 문제가 될 수 있음.
- 매개변수를 메모리에 저장한 후 메모리의 주소 값을 레지스터에 저장
- 매개변수를 프로그램의 스택에 push하고 OS에서 pop해 매개변수를 전달
* 출처 *
반응형