[OS]운영 체제란 무엇인가?

Legday_Dev·2024년 2월 28일

CS

목록 보기
7/13
post-thumbnail

운영체제 란?


운영체제(OS, Operating System)는 쉽게 말해 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어이다.

  • 운영체제는 하드웨어와 소프트웨어의 중간다리 역할이라고 보면 된다.
  • 즉, 사용자와 하드웨어 사이의 인터페이스 역할을 하면서 응용 프로그램이 효율적으로 동작하도록 지원하고, 시스템 자원을 효율적으로 관리해준다.
  • 운영체제의 가장 핵심 부분은 커널(Kernel) 이다.
    • 운영체제의 커널은 전반적인 프로세스를 뜻한다. 프로세스 관리, 메모리 관리, 저장공간 관리, 연결된 장치 관리 등 컴퓨터에 속한 모든 자원을 관리하는 역할을 한다.
  • 운영체제의 종류는 Windows , Linux, Unix, macOS 등이 있다.

운영체제의 역할


프로세스 관리

  • OS 에서 작동하는 응용 프로그램을 관리하는 기능
  • 어떻게 보면 프로세서(CPU) 관리하는 것이라고 볼 수 있다.
  • 현재 CPU를 점유해야 할 프로세스(프로그램)을 결정하고, 실제로 CPU에 할당한다.
  • 프로세스 간 공유 자원 접근과 통신 등을 관리하게 된다.

저장장치 관리

1차 저장장치(메인 메모리)2차 저장장치(HDD 등)을 관리한다.

  • 1차 저장장치(Main Memory)
    • 프로세스에 할당하는 메모리 영역의 할당과 해제
    • 메모리 영역 간의 침범 방지
    • 메인 메모리의 효율적 활용을 위한 가상 메모리 기능
  • 2차 저장장치(HDD, NAND Flash Memory 등)
    • 파일 형식의 데이터 저장
    • 파일 데이터 관리를 위한 파일 시스템을 OS에서 관리
    • FAT, NTFS, EXT2, JFS, XFS eㅡㅇ 많은 파일 시스템들이 개발되어 사용 중

네트워킹

  • TCP/IP 기반의 인터넷에 연결하거나, 응용 프로그램들이 네트워크를 사용하려면 OS 에서 네트워크 프로토콜을 지원해야 한다. 현재 사용 OS 들은 다양하고 많은 네트워크 프로토콜을 지원한다.

디바이스 드라이버

  • OS 는 시스템의 자원, 하드웨어를 관리한다.
  • 시스템에는 여러 하드웨어가 붙는데 OS가 이들을 인식하고 관리하게 만들어 응용프로그램이 하드웨어를 사용할 수 있게 만들어야 한다.
  • 따라서 OS 안에 하드웨어를 추상화 해주는 계층이 필요한데, 이를 디바이스 드라이버라 한다.
  • 이런 수많은 디바이스 드라이버를 관리를 OS가 한다.

입출력 관리

  • OS 는 입출력 장치와 상호작용을 관리한다.
  • 사용자와 응용 프로그램이 키보드, 마우스, 디스플레이 등과 통신을 할 수 있도록 지원하며, 입출력 장치의 성능을 최적화 한다.

오류처리

  • OS 는 시스템 내/외부에서 발생하느 오류와 예외 상황을 처리한다.
  • 프로세스의 비정상 종료 , 메모리 오버플로우, 입출력 오류 등을 감지하고 처리하여 시스템의 안정성과 신뢰성을 유지한다.

시스템 콜(System Call) 인터페이스


  • 시스템 콜은 사용자나 프로그램이 직접적으로 컴퓨터 자원에 접근하는 것을 막고 커널을 보호하기 위해서 만든 코드 집합이다.
  • 커널에 접근할려면 시스템 콜 함수를 통해 접근할 수 있다.
  • 커널에는 굉장히 중요한 코드나 중요한 내용이 있는데 아무나 접근하게 만들면 누가 바꾸거나 할 수 있기 때문에 OS 는 시스템 콜을 통해서만 호출할 수 있게 디자인 되어 있다.
  • OS 를 통해 안정적이고 효율적인 동작을 할려면 사용자나 응용프로그램이 직접 하드웨어에 접근하는 것을 막아야 한다.
    • User Mode(CPU 명령어 사용 제한) 과 Kernel Mode(CPU 명령어를 사용하여 하드웨어 직접 제어)로 분리해 OS를 사용하게 된다.
    • User Mode 와 kernel Mode 는 시스템 콜(System Call)을 통해서 전환된다.

<출처>
운영체제(OS)란? 개념과 구조(커널, 시스템콜 등)
[운영체제] 운영체제(OS)란?
Tech Interview

profile
백엔드개발자

0개의 댓글