[CS / OS] Part 1. 운영체제와 컴퓨터

Dyong_Song·2024년 2월 26일

<쉽게 배우는 운영체제 - 조성호> 책을 읽고, 운영체제를 파트별로 나눠 기록하고자 합니다!

Chapter 01. 운영체제의 개요

운영체제

  • 정의
    : 응용 프로그램의 잘못된 동작으로 컴퓨터가 망가지는 것을 막기 위해 컴퓨터 전체를 관리하고 운영하는 소프트웨어 OS(Operating SYstem)

  • 특징

    • 컴퓨터를 관리하기 위한 기본적인 규칙과 절차를 규정하여, 컴퓨터 내의 모든 하드웨어와 응용 프로그램 관리
    • 사용자 혹은 응용 프로그램이 자원에 직접 접근하는 것을 차단 → 모든 컴퓨터 자원 숨기기
    • 즉, 컴퓨터 자원을 효율적으로 관리하는 소프트웨어
    • 컴퓨터 실행 시, 가장 먼저 실행되는 소프트웨어

  • 운영체제 관점에서 바라 본 컴퓨터 구조

    • 운영체제는 커널(kernel)인터페이스(interface)로 구분
    • 커널(kernel)은 운영체제 핵심 기능의 집합 → 커널을 통해서만 컴퓨터 자원에 접근 가능
    • 인터페이스(interface)는 키보드, 모니터, 마우스와 같이 커널에 명령을 내리고, 결과를 출력하는 장치
    • 사용자 혹은 응용 프로그램이 컴퓨터 자원을 사용하는 경우, OS가 제공하는 함수 형태의 인터페이스 사용 必 (User interface, UI) → 함수의 규칙에 따라 명령어 입력 (문자 기반 인터페이스) → 그림을 클릭하거나 확대하는 등 그래픽화 된 인터페이스 사용 (Graphical User Interface, GUI)
  • 운영체제의 역할과 목표

    • 자원 관리 → 효율성
      : 자원을 요청하는 어플리케이션에 순위나 할당량을 부여
    • 자원 보호 → 안정성
      : 비정상적인 사용으로부터 컴퓨터 자원 보호
    • 하드웨어 인터페이스 제공 → 확장성
      : 마우스, 키보드 등의 인터페이스를 특정한 형태로 인터페이스화하여 하드웨어 인터페이스의 모델, 회사 등을 고려할 필요 X (Plug and Play)
    • 사용자 인터페이스 제공 → 편리성
      : 사용자가 이용하기 편리하도록 발전한 결과, 명령어 → 마우스 → 터치 → 음성인식 등, 다양한 방식으로 컴퓨터에 접근 + 사용 가능

운영체제의 발전

1. 초기 컴퓨터

: 초기 컴퓨터 에니악과 같이 전선을 연결하여 논리회로를 구성한 하드 와이어링 방식의 컴퓨터

2. 일괄 작업 시스템

: 초기 컴퓨터의 구성을 IC(Integrated Circuit)칩을 통해 작은 크기로 구현하여, 현재의 모습과 유사한 컴퓨터 등장 → 모든 작업을 한꺼번에 처리하는 일괄 작업 시스템: 입력하면 출력이 나오는 형태

3. 대화형 시스템

: 키보드와 모니터의 개발로 인해 프로그램과 데이터를 입력한 뒤, 결과를 받아오는 일괄 작업 시스템에서 프로그램 진행 도중 입력을 받아 작업의 흐름을 바꾸는 대화형 시스템 등장

4. 시분할 시스템

: CPU로 여러 작업을 동시에 실행하는 기술 → 여러 작업을 조금씩 처리하여, 작업이 동시에 이루어지는 것'처럼' 보이는 기술 시분할 시스템 → 단, 사용자 메모리를 정리하는 추가 작업이 필요

5. 분산 시스템

: 값이 싸고, 크기가 작은 컴퓨터를 하나로 묶어 대형 컴퓨터처럼 성능을 올리는 시스템
→ cf) 인터넷의 등장: 컴퓨터 간의 네트워크 통신 프로토콜 정의 (TCP/IP)

6. 클라이언트/서버 시스템

: 작업을 요청하는 클라이언트 컴퓨터와 요청에 응답하는 서버 컴퓨터로 분리
→ 서버에 여러 클라이언트의 요청이 발생할 경우, 서버 과부하 문제 발생

7. P2P 시스템

: 서버 과부하를 막을 수 있는 시스템 → 서버는 요청 데이터의 위치 정보만 저장 → 서버를 통한 다운이 아닌 데이터를 보유한 컴퓨터와 요청한 컴퓨터 사이의 데이터 전송 ex) 카카오톡, 블록체인

8. 클라우드 컴퓨팅

: 통신 기술의 발달로 데이터 전송 속도 비약적 상승 → 필요한 데이터를 특정 컴퓨터에 저장한 뒤, 통신을 통해 필요할 때마다 사용하는 시스템

운영체제의 구성

커널과 인터페이스

운영체제는 커널과 인터페이스로 구성

  • 커널(kernel) : 프로세스 관리, 메모리 관리, 저장장치 관리 → 운영체제의 핵심 기능을 구현한 프로그램
  • 인터페이스(interface) : 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 전달
  • 커널별 운영체제
    • 유닉스 계열: 문자 명령 위주 (셸 shell ex) csh, tsh, bash)
    • 윈도우 계열: 그래픽 명령 위주 (cmd도 존재)

시스템 호출과 디바이스 드라이버

커널 내부의 개념

  • 시스템 호출 : 커널이 자신을 보호하기 위해 만든 인터페이스
    • 사용자의 리소스 직접 접근을 차단
    • 리소스 접근은 오직 시스템 호출을 통해서만 가능
      → print(), write()와 같은 정해진 양식의 호출 방법을 통해서 이뤄진다.
    • API : 시스템 호출과 비슷한 개념으로, 정해진 양식을 사용하여 이미 만들어진 함수를 호출하여 사용하는 방식 → 즉, 운영체제에서 제공하는 함수를 이용하는 것 = 운영 체제의 API를 사용하는 것
  • 디바이스 드라이버 : 커널과 하드웨어의 인터페이스를 총칭하여 Device Driver (Driver)
    → 운영체제가 지원하지 않는 드라이버는 따로 설치 必 ex) 그래픽 카드, 프린터 등등

커널의 역할과 종류

  • 역할
    • 프로세스 관리
      : 프로세스에 CPU를 배분하고 작업 환경 제공
      → 프로세스 : 프로그램 실행시, 프로세스로 전환
    • 메모리 관리
      : 프로세스에 작업 공간을 배치, 메모리 공간 제공
    • 파일 시스템 관리
      : 데이터를 저장하고, 접근할 수 있는 인터페이스 제공
    • 입출력 관리
      : 필요한 입력과 출력 서비스 제공
    • 프로세스 간 통신 관리
      : 공동 작업을 위한 각 프로세스 간 통신환경 지원

→ 위의 역할을 어떤 식으로 구현하는가에 따라 단일형, 계층형, 마이크로 구조 커널로 구분

  • 종류
    • 단일형 구조 커널
      : 초창기 운영체제의 구조, 커널의 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성
      → 모듈의 구분이 없으므로, 모듈 간 통신 비용이 줄어 효율적 운영 가능
      → But! 버그 발생시, 어떤 프로세스에 의해 발생한 것인지 파악하기 어려움
      + OS의 여러 기능이 하나의 모듈로 관리되므로, 작은 결함으로 인해 OS 다운 위험
    • 계층형 구조 커널
      : 단일형 구조 커널의 발전 형태, 비슷한 기능의 모듈을 묶어 하나의 계층으로 만들고 계층 간 통신을 통해 운영체제를 구현하는 방식
      → 오늘날 대부분의 OS가 체택하는 방식
      → ex) 입출력 관리자 / 메모리 관리자 / 프로세스 관리자 등으로 계층 구분
    • 마이크로 구조 커널
      : 계층형 구조 커널의 크기가점점 방대해지면서, 디버깅 어려움 → 마이크로 구조 커널
      → 기본적인 기능(프로세스 관리 / 메모리 관리 / 프로세스 간 통신 관리)만 제공
      → OS가 수행하는 많은 부분을 사용자 영역에 구현
      → 메모리 관리와 프로세스 간의 동기화 서비스를 제공하며, 메모리 관리자와 동기화 모듈은 프로세스 간 통신 모듈로 연결
      → ex) 애플의 OS X, iOS
profile
꾸준한 개발자가 되자! Do steady yong

0개의 댓글