computer science/operation system
[오늘 CS] 운영체제 - 개요
nani-jin
2023. 11. 16. 14:34
1. 운영 체제(Operating System)
- 운영체제는 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원하는 소프트웨어로 다음과 같은 역할을 수행한다
- 응용 프로그램을 관리하고
- 응용 프로그램이 요청하는 시스템 자원을 효율적으로 분배하며
- 사용자와 컴퓨터간 커뮤니케이션을 지원한다
- 운영체제는 하나의 프로그램(=소프트웨어)로 반드시 메모리에 적재되어야 한다
- 운영체제는 '매우 특별한 프로그램'으로 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 실행된다
- 사용자가 이용하는 응용 프로그램이 적재되는 영역을 사용자 영역(커널 영역을 제외한 나머지 영역)이라고 한다
- 즉, 운영체제는 특별한 프로그램으로 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 돕는 특별한 프로그램이다
2. 왜 운영체제를 알아야 할까?
- 결국 모든 코드는 운영체제 위에서 돌아간다. 따라서 운영체제에 대해 이해하는 것은 적절하고 효율적이고 안전한 프로그래밍을 위해 필수적이다
- 운영체제는 시스템 자원과 프로그램에 대해 아주 잘 알고 있다
- 운영체제는 딱딱한 하드웨어가 아닌 프로그램이기 때문에 우리와 대화할 수 있다
- 따라서 운영체제가 주는 메시지(예를 들어, 에러 메시지)를 통해 문제 해결의 실마리를 찾을 수 있다!
3. 운영체제의 역할
- 시스템 자원 관리자다
- 각 시스템 자원들은 자신이 어떻게 얼마나 쓰일지 스스로 결정할 수 없다
- 운영체제는 이런 시스템 자원들을 분배하고 관리하는 역할을 수행한다
- 사용자와 커뮤니케이션을 지원한다
- 효율적이고 유연한 시스템 관리를 위해 쉘(인터페이스)을 제공해 사용자와 커뮤니케이션을 지원한다
- 효율적이고 유연한 시스템 관리를 위해 쉘(인터페이스)을 제공해 사용자와 커뮤니케이션을 지원한다
- 응용 프로그램을 제어한다
- 응용 프로그램은 누구나 만들 수 있기 때문에 무한 반복문이 들어가는 등 잘못 만들어질 가능성이 크다
- 따라서 운영체제는 응용 프로그램에 대한 중지 및 실행 등을 결정하고,
- 응용 프로그램에 대한 권한(예. 관리자 권한)과 사용하는 사용자(예. 로그인)도 관리한다
4. 사용자 모드(user mode)와 커널 모드(kernel mode)
- 사용자 모드의 응용 프로그램은 함부로 컴퓨터 시스템을 해치지 못한다. 항상 커널을 통해 요청하기로 되어있다
- 컴퓨터에 영향을 미치는 아주 중요한 기능들은 응용 프로그램이 직접 접근하지 못하며, 운영체제만 접근할 수 있도록 커널 모드에서만 실행된다
- 따라서 사용자 모드에서 실행되는 응용 프로그램이 중요한 기능을 사용하고 싶으면, 시스템 콜을 통해 커널에 요청하며 커널이 커널 모드로 요청을 처리한다
5. 시스템 콜(system call)
- 사용자 모드에서 실행되는 응용 프로그램이 중요한 동작을 실행해야 할 때 운영체제의 서비스를 요청하게 되는데, 이때 사용되는 인터페이스다
- 이를 통해 프로그램은 하드웨어 자원에 직접 접근하지 않아도 파일 시스템, 메모리 관리, 프로세스 제어, 네트워크 통신 등의 작업을 수행할 수 있다
6. '운영체제를 만든다'의 의미
- Operating system 개발
- system call 개발
- 이를 기반한 언어별 API 개발
- (지원되는 언어로) Shell 프로그램 개발
- (지원되는 언어로) 응용 프로그램 개발
[출처] 잔재미코딩, 혼자 공부하는 컴퓨터구조 + 운영체제