1.1.1 운영체제란?
운영체제(OS)란 하드웨어 위에 설치되어 하드웨어 계층과 다른 소프트웨어 계층을 연결하는 소프트웨어 계층이다.
- 컴퓨터 시스템의 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공
- 사용자와 컴퓨터 간 인터페이스를 제공 -> 사용자가 컴퓨터를 편리하게 사용
- 윈도우, 맥OS, 리눅스, 유닉스
1.1.2 운영체제의 목적
1. 처리 능력
자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상시킴
2. 반환 시간
요청한 작업을 완료할 때까지 소요되는 시간을 단축시킴
3. 사용 가능도
시스템 자원을 얼마나 빨리 제공할 수 있는가 -> 사용자가 컴퓨터를 사용해야할 때 자원을 즉시 사용할 수 있어야함.
4. 신뢰도
시스템이 주어진 문제를 정확하게 푸는지 -> 입력 값에 대한 정확한 결과 값을 줄 수 있도록 신뢰도를 향상시켜야 함.
☝🏻 OS는 한정된 자원 안에서 정확하고 빠르게 주어진 문제를 해결하는 것이 목적이다
1.1.3 CPU와 메모리 구조
CPU
'컴퓨터의 뇌' 즉, 컴퓨터에서 프로그램을 실행하는데 필요한 연산을 처리하고 수행한다. 프로세서라고도 한다.
메모리
데이터를 저장하기 위한 기억장치로 주 기억장치와 보조 기억장치가 있다.
- 주 기억장치
휘발성 메모리로 메인 메모리를 의미한다. 일반적으로 RAM을 가리킨다. - 보조 기억장치
비 휘발성 메모리로 SSD, HDD등이 해당된다.
💡 메모리의 계층 구조
- 레지스터 : CPU가 요청을 처리하는데 필요한 데이터를 임시로 저장하는 기억장치
- 캐시 메모리 : CPU와 RAM사이의 속도 차이를 해결하기 위한 기억장치
- RAM : 프로그램을 실행할 때 필요한 정보를 저장하는 기억장치
휘발성 기억장치, 보통 메모리라고 할 때 RAM을 의미하는 경우가 많음. - 하드 디스크 : 사용자가 필요한 데이터와 프로그램을 저장하는 기억장치
비휘발성 기억장치
☝🏻 프로그램을 실행하면 OS가 디스크에 있는 프로그램을 메모리로 로드한다. 이때 메모리에 로드한 프로그램을 프로세스라고 하며, CPU가 이를 처리한다.
1.1.4 커널과 시스템 콜
커널
- 컴퓨터 하드웨어와 프로세스의 보안
- 하드웨어 추상화
- 자원관리 - CPU스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등을 담당
- 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널 모드와 사용자 모드를 나눈다.
- 커널 모드 - 하드웨어에 직접 접근해 메모리, CPU와 같은 자원을 사용 가능(사용자 모드에서는 접근 제한)
🔍 만약 사용자 모드에서 실행된 프로세스가 자원에 접근하고 싶다면? 이때 사용하는게 바로 시스템 콜이다
시스템 콜
사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수
⏫ 커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환한다.
- 프로세스 제어
- 파일 조작
- 장치 관리
- 데이터 유지 보수
- 통신
- 보호
- 시스템 콜의 대표적인 예
fork() : 프로세스 생성
wait() : 부모 프로세스가 자식 프로세스의 수행을 기다림
⏬ 시스템 콜에서 커널에 매개 변수를 전달하는 방법
📖 시스템 콜에서 커널에 매개 변수를 전달하는 방법 3가지
- 매개변수를 CPU의 레지스터에 직접 전달(매개변수 개수 > 레지스터 개수 -> 문제 발생)
- 매개변수를 메모리에 저장하고 메모리의 주소 값을 레지스터에 저장
- 매개변수를 프로그램의 스택에 push하고 OS에서 pop해 매개변수를 전달
'[ STUDY ] > CS' 카테고리의 다른 글
[ 운영체제 ] 가상 메모리 - 요구 페이징, 스레싱 (0) | 2024.11.11 |
---|---|
[ 운영체제 ] 메모리 관리 전략 - 페이징, 세그먼테이션 (0) | 2024.11.11 |
[ 운영체제 ] 스케줄링 (0) | 2024.11.11 |
[ 운영체제 ] 프로세스 2️⃣ - 프로세스 동기화, 교착 상태, IPC, 좀비고아··· (2) | 2024.11.11 |
[ 운영체제 ] 프로세스 1️⃣ - 프로세스, 스레드, 콘텍스트 스위칭, PCB ··· (0) | 2024.11.11 |