CS/Operating System
[Operating System] Operating System
hanseongbugi
2024. 4. 4. 15:04
Operating System(운영체제)?
- 하드웨어를 관리하고, 컴퓨터 시스템의 자원을 효율적으로 관리한다.
- 응용프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공한다.
- 운영체제는 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어라고 할 수 있다.
- 종류로는 Window, Linux, UNIX, MS-DOS 등이 있으며, 시스템의 역할 구분에 따라 용이점이 있다.
운영체제 목적
- 운영체제의 목적에는 처리능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등이 있다.
- 처리능력, 반환시간, 사용가능도, 신뢰도는 운영체제의 성능을 평가하는 기준이 된다.
- 처리능력(Throughput)
- 일정시간 내에 시스템이 처리하는 일의 양
- 반환시간(Turn Around Time)
- 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 사용가능도(Availability)
- 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도(Reliabilty)
- 시스템이 주어진 문제를 정확하게 해결하는 정도
운영체제의 역할
프로세스 관리
- 운영체제에서 작동하는 응용 프로그램을 관리하는 기능이다.
- 어떤 의미에서는 프로세서(CPU)를 관리하는 것이라고 볼 수도 있다.
- 현재 CPU를 점유해야할 프로세스를 결정하고, 실제 CPU를 프로세스에 할당하며, 이 프로세스간 공유 자원 접근과 통신 등을 관리하게 된다.
저장장치 관리
- 1차 저장장치에 해당하는 메인 메모리와 2차 저장장치에 해당하는 하드디스크, NAND 등을 관리하는 기능이다.
- 1차 저장장치(Main Memory)
- 프로세스에 할당하는 메모리 영역의 할당과 해제
- 각 메모리 영역간의 침범 방지
- 메인 메모리의 효율적 활용을 위한 가상 메모리 기능
- 2차 저장장치(HDD, NAND Flash Memory 등)
- 파일 형식의 데이터 저장
- 파일 데이터 관리를 위한 파일 시스템을 OS에서 관리
- FAT, NTFS, EXT2, JFS, XFS 등 많은 파일 시스템들이 개발되어 사용 중
네트워킹
- 네트워킹은 컴퓨터 활용의 핵심과도 같아졌다.
- TCP/IP 기반의 인터넷에 연결하거나, 응용프로그램이 네트워크를 사용하려면 운영체제에서 네트워크 프로토콜을 지원해야한다.
- 현재 상용 OS들은 다양하고 많은 네트워크 프로토콜을 지원한다.
- 운영체제는 사용자와 컴퓨터 하드웨어 사이에 위치하여, 하드웨어를 운영 및 관리하고 명령어를 제어하여 응용프로그램 및 하드웨어를 소프트웨어적으로 제어 및 관리를 해야한다.
사용자 관리
- 우리가 사용하는 PC는 하나의 PC로 여러 사람이 사용하는 경우가 많다.
- 운영체제는 한 컴퓨터를 여러 사람이 사용하는 환경도 제공한다.
- 운영체제는 각 계정을 관리하는 기능을 가지고 있으며, 사용자 별로 프라이버시와 보안을 위해 개인 파일에 대해선 다른 사용자가 접근할 수 없도록 한다.
- 파일이나 시스템 자원에 접근 권한을 지정할 수 있도록 지원하는 것이 사용자 관리 기능이다.
디바이스 드라이버
- 운영체제는 시스템의 자원, 하드웨어를 관리한다.
- 시스템에는 여러 하드웨어가 붙어있는데, 이들을 운영체제에서 인식하고 관리하게 만들어 응용 프로그램이 하드웨어를 사용할 수 있게 만들어야 한다.
- 운영체제 안에는 하드웨어를 추상화 해주는 디바이스 드라이버라고 불리는 계층이 존재한다.
- 하드웨어의 종류가 많은 만큼, 운영체제 내부의 디바이스 드라이버도 많이 존재한다.
- 수많은 디바이스 드라이버들을 관리하는 기능 또한 운영체제가 맡고 있다.
운영체제의 위치
- 사용자 응용프로그램(Application)은 특정 운영체제에 맞춰서 만든다.
- 하나의 애플리케이션은 서로 다른 운영체제에서 수행할 수 없다.
- 애플리케이션은 그림과 같이 운영체제 위에서 수행한다.
- 즉, 하드웨어 자원을 직접 사용하지 않고 운영체제가 제공하는 자원만을 사용할 수 있다.
운영체제 구조
- 운영체제는 크게 커널(kernel)과 명령어 해석기(Command interpreter, shell)로 나뉜다.
- 커널은 말그대로 운영체제의 핵심으로 운영체제가 수행하는 모든 것이 저장되어 있다.
- 명령어 해석기는 사용자가 커널(운영체제)에 요청하는 명령어를 해석하여 커널에 요청하고 그 결과를 출력한다.
- 사용자는 GUI(Graphical User Interface)나 CLI(Command Line Interface) 같은 방식으로 운영체제에 명령을 요청할 수 있다.
출처
https://coding-factory.tistory.com/300
https://github.com/gyoogle/tech-interview-for-developer