운영체제(Operating System)
: 컴퓨터 시스템의 하드웨어, 소프트웨어 자원들을 효율적으로 운영 및 관리함으로써 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 도와주는 시스템 소프트웨어
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
-> 즉, 중계자 역할을 하는 프로그램

커널(Kernel)
: 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러가지 서비스를 제공하는 운영체제의 핵심 부분
- 컴퓨터 전원을 켜면 운영체제는 커널과 동시에 수행됨
- 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가있어야 함
- 운영체제 자체도 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라가야 함
- But, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 한정된 메모리 공간의 낭비가 심해짐
- 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓음 -> 필수적이지 않은 부분은 필요할 때 메모리에 올려서 사용
-> 이때, 메모리에 상주하는 운영체제의 부분이 커널
1. 커널의 역할
- 보안
- 자원 관리
- 추상화
- 컴퓨터 자원 : CPU 메모리, 가상 메모리, 키보드 마우스 등 물질적인 것과 스레드, 패킷, 프로토콜, 테스크와 같은 추상적인 것들로 구성
- 자원을 효율적으로 관리하기 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등의 업무를 수행
운영체제는 여러 프로그램이 동시에 실행될 수 있는 다중 프로그래밍 환경에서 동작
- 프로그램들 사이의 충돌이 발생하지 않게 이중 동작 모드 기법을 사용
2. 이중 동작 모드(Dual - mode Operation)
- 운영체제의 원활한 작동과 기능을 위해서 사용자의 시스템 자원 접근을 제한하는 보호 장치
1) 사용자 모드(User Mode)
: 일반 사용자가 접근할 수 있는 영역을 제한적으로 두고, 프로그램 자원에 함부로 침범하지 못하게 하는 모드
- 사용자는 사용자 모드에서 코드를 작성하고 프로세스를 실행하는 등의 행동을 함
- 시스템에 중요한 영향을 미치는 연산은 커널 모드에서만 실행 가능하게 함으로써 하드웨어의 보안을 유지
- 접근을 위해서는 시스템 콜을 사용해야 함
2) 커널 모드(Kernel Mode)
: 운영체제가 CPU의 제어권을 가지고 운영 체제 코드를 실행하는 모드
- 수퍼바이저 모드(Supervisor Mode), 특권 모드(Previliged Mode), 시스템 모드(System Mode)라고도 불림
- 시스템의 모든 메모리에 접근 가능하며 모든 종류의 CPU 명령을 실행할 수 있음
- 운영체제 코드나 디바이스 드라이버 같은 커널 모드 코드를 실행함
- 디바이스 드라이버
- 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램
- 컴퓨터를 구성하는 다양한 입출력 장치마다 각각 장치 드라이버가 프로그램 커널에 통합되어 실행됨
시스템 콜(System Call)
: 운영체제에서 제공하는 서비스들을 사용하기 위한 프로그래밍 인터페이스
- 보통 직접적으로 시스템 콜을 사용하기 보다는 API를 통해 사용하게 됨
- C, C++ 같은 고급 언어로 작성된 프로그램들은 직접 시스템 콜을 할 수 없기 때문에 고급 API를 통해 시스템 호출에 접근하게 하는 방법
- 운영체제는 메모리에 프로그램 적재, I/O 처리, 파일 시스템 처리 등 여러 서비스들을 제공하고, 사용자 프로세스는 시스템 콜을 통해 서비스를 제공받음
- 각 시스템 콜에는 번호가 할당되고 시스템 콜 인터페이스는 이러한 번호에 따라 인덱스되는 테이블이 유지됨
1. 시스템 콜 종류
- 프로세스 제어
- 파일 조작
- 디바이스 조작
- 정보 유지
- 통신 보호
2. 시스템 콜 EXAMPLE
cp in.txt out.txt
- 일반적으로 윈도우 운영체제의 경우 마우스, 리눅스 운영체제의 경우 키보드가 사용자의 입력을 받음
-> 이때, I/O 시스템 콜을 사용
- 위와 같은 문장을 입력받아서 cp 프로그램을 실행시킴
- in.txt 파일이 현재 디렉토리에서 접근할 수 있는 파일인지 검사하기 위해 시스템 콜 호출
- 만약 파일이 존재하지 않는다면, 에러를 발생시키고 프로그램을 종료하는데 시스템 콜 사용
- 만약 파일이 존재할 경우, 복사한 파일을 저장하기 위해 out.txt 파일 명이 있는지 검사
- 파일 명이 존재하는지 존재하지 않는지 검사하기 위해 시스템 콜을 통해 확인
- 파일이 이미 존재한다면 엎어 씌워야 할지 아니면 이어 붙여야 하는지 사용자에게 물어볼 수 있음
- 만약 저장하고자 하는 파일 이름이 겹치지 않는다면, 파일을 저장해야 핳 때도 시스템 콜 사용
'운영체제' 카테고리의 다른 글
8. 주소 공간과 가상 메모리(Address Space, Virtual Memory) (0) | 2025.01.23 |
---|---|
7. Context Switching(문맥 교환) (0) | 2025.01.23 |
추가적인 내용 (0) | 2025.01.19 |
5. 인터럽트(Interrupt) (0) | 2025.01.16 |
4. CPU 스케줄링 알고리즘 (0) | 2025.01.16 |