본문으로 바로가기

운영체제 (Operating System)란?

category Computer Science/OS 2021. 6. 28. 15:42

운영 체제란?

운영 체제의 정의

  • 운영체제는 응용 프로그램과 시스템 자원을 제어하고 관리하는 소프트웨어이다. 소프트웨어의 종류는 크게 운영체제와 응용프로그램으로 나눌 수 있다.

운영 체제의 세가지 역할

  • 시스템 자원(CPU, Memory, I/O Devices, SSD, HDD, 등)을 관리한다.
  • 사용자와 컴퓨터간의 커뮤니케이션을 지원한다.
  • 컴퓨터 하드웨어와 응용프로그램을 제어한다.

운영체제의 발전 과정

  • 1950년 대
    • 1개의 응용프로그램 실행시키기도 바빴기에 운영체제 개념 없었음.
    • 응용프로그램이 시스템 자원 직접 제어
  • 1960년 초반
    • 프로그램과 사용자가 많아지면서 여러 응용 프로그램이 등록된 순서대로 실행될 수 있는 배치 처리 시스템 등장
  • 1960년 후반
    • 여러개의 응용 프로그램을 동시에 실행시키기 위해서 시분할 시스템멀티태스킹 등장
  • 1970년 대
    • C언어의 등장과 함께 제대로 된 운영체제인 UNIX 개발됨(AT&T사에서 켄 톰슨, 데니스 리치에 의해 개발)
    • UNIX는 멀티태스킹, 시분할 시스템, 멀티프로그래밍, 다중 사용자 지원 등 현대 운영체제 기술 확립
  • 1980년 대
    • 개인용 컴퓨터 시대 Personal Computer(PC)의 등장
    • CLI(커맨드라인, 터미널)에서 GUI로 전환 시작
  • 1990년 대
    • GUI를 활용한 응용 프로그램 시대. 개인용 컴퓨터(Window 95 OS)의 대중화
    • 네트워크 기술 발전
    • 오픈 소스 운동 활성화 LINUX 운영체제 공개
  • 2000년대 이후
    • LINUX, Apache, MySQL 등 오픈 소스 공개
    • 가상 머신, 대용량 병렬 처리 등 활성화

운영체제 구조

▲ 운영체제 구조

  • 쉘(Shell): 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 제공된 인터페이스 프로그램.
  • API(Application Programming Interface): 응용프로그램(쉘도 응용프로그램의 일종)이 운영체제 기능과 서비스를 조작할 수 있도록 운영체제가 제공하는 인터페이스 함수들의 모음. 각 언어별 API가 존재한다.
  • 시스템 콜(System Call): 운영체제가 운영체제 각 기능을 사용할 수 있도록 제공하고 있는 명령 또는 함수. API는 내부에서 시스템 콜을 호출하는 형태로 만들어진다.

사용자 모드와 커널 모드

응용 프로그램이 전체 컴퓨터 시스템을 함부로 헤치지 못하도록 CPU 권한에 다음 두 가지 권한 모드를 설정.

  • 사용자 모드(User mode): 응용 프로그램이 사용
  • 커널 모드(Kernel mode): OS가 사용

▲ 사용자 모드와 커널 모드

사용자 모드에서 커널 모드를 사용하기 위해서는 반드시 시스템 콜을 사용해야한다.

프로세스 스케쥴링

  • 배치 처리 시스템
    • 컴퓨터 프로그램 실행 요청 순서에 따라 순차적으로 프로그램을 실행하는 방식
    • 동시 작업, 다중 사용자 이용이 어렵다
  • 시분할 시스템
    • 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템.
    • 응용 프로그램이 CPU를 사용하는 시간을 잘게 쪼개서 여러 개의 응용 프로그램을 번갈아가면서 작업
  • 멀티 태스킹
    • 단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템. (시분할 시스템은 멀티 태스킹 시스템이다)
  • 멀티 프로세싱
    • 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화시키는 시스템.
  • 멀티프로그래밍
    • 시간 대비 CPU 활용도를 높이는 시스템. 여러 응용 프로그램들을 짧은 시간 안에 실행 완료시킬 수 있음.
    • 응용 프로그램이 CPU를 쓰지 않는 작업(HDD에서 데이터를 읽는 등)을 할 때 CPU가 불필요하게 대기하지 않고 다른 작업을 수행하도록 하는 방법 등이 있다.

아래는 멀티 태스킹과 멀티 프로세싱의 차이이다. 멀티 태스킹은 여러 프로세스를 동시에 실행하는 방식이고, 멀티 프로세싱은 병렬 처리를 통한 성능 향상이기 때문에 차이를 이해하고 있자.

▲ 멀티 태스킹과 멀티 프로세싱의 차이