[OS] 운영체제 개요

EMMA·2022년 2월 7일
0
post-thumbnail
post-custom-banner

운영체제 (OS) 개요


[학습 내용]
운영체제의 정의와 역할 (자원관리 및 보호/하드웨어 인터페이스 제공/사용자 인터페이스 제공)
운영체제의 역사 (~P2P system, grid computing, cloud computing, IoT)
운영체제의 구성 : 인터페이스 & 커널 (시스템 호출, 드라이버)
커널의 종류 (단일형, 계층형, 마이크로 구조)


[주요 내용 확인]

  • 운영체제란?
    • 인터페이스 환경 제공 + 컴퓨터 시스템의 자원을 관리하는 소프트웨어 (탑재되는 기기의 종류에 따라, 펌웨어 = 운영체제를 의미하기도)
    • 임베디드 운영체제: 가전제품과 같이 CPU성능이 낮고 메모리 크기가 작은 시스템에 내장하도록 만든 운영체제. 임베디드 시스템이라고도 함
  • 운영체제의 역할과 목표
    • 자원 관리: 컴퓨터 자원을 적당한 시점에 응용 프로그램에 분배 (효율성)
    • 자원 보호: 컴퓨터 자원을 비정상적인 작업으로부터 보호 (안정성)
    • 하드웨어 인터페이스 제공: CPU,메모리,키보드,마우스 등 하드웨어를 일관된 방법으로 사용할 수 있도록 지원 (확장성)
    • 사용자 인터페이스 제공: GUI를 제공, 사용자가 운영체제를 편하게 이용할 수 있도록 함 (편리성)
  • 시스템 호출이란?
    • 커널이 자신의 자원을 보호하기 위해 만든, 시스템 자원 사용과 관련된 함수의 집합
    • print() 함수가 대표적인 사례
    • API(application programming interface)는 시스템 호출보다 더 광범위한 개념이라고 할 수 있고, SDK(sysetm developer's kit)는 API + 개발에 필요한 코드 편집기/에뮬레이터 등 개발용 프로그램까지 하나로 묶은 개발 툴
  • 커널이란?
    • 운영체제의 핵심 기능 (프로세스 관리/메모리 관리/파일 시스템 관리/입출력 관리/ 프로세스 간 통신 관리) 을 모아놓은 것
    • 하드웨어 자원을 필요한 프로세스에 분배하고, 프로세스 제어, 메모리 제어 , 파일 시스템 관리, 입출력 관리 등 기능 수행
  • 커널의 종류 (단일형 vs 마이크로)
    • 단일형 구조 커널: 커널의 핵심 기능을 구현하는 모듈들이 하나의 덩어리로 구성. 속도는 빠르나 모든 모듈이 하나로 묶여 잇어 오류를 처리하기 어렵고, 하나의 오류가 전체로 확산되기 쉬운 구조. 다른 시스템에 적용하기도 어려움.
    • 마이크로 구조 커널: 커널은 프로세스 관리/메모리 관리/프로세스 간 통신 관리만 제공하고, 나머지는 사용자 영역에서 구현. 각 모듈은 독립적으로 존재하며 가벼워서 CPU 용량이 작은 시스템에도 쉽게 적용할 수 있음 (애플의 macOS와 iOS가 마이크로 구조 커널을 채택)
    • 드라이버는 커널과 하드웨어 사이의 인터페이스. 마우스,키보드와 같이 단순한 디바이스의 드라이버는 커널에 포함되어 있으며 그래픽카드/프린터 등의 복잡한기기의 드라이버는 사용자가 직접 설치해야 함(드라이버는 하드웨어 제작사가 제공). 결론적으로 하드웨어는 커널과 직접 연결되기도 하고 하드웨어 제작사가 제공하는 드라이버를 통해 연결되기도 함
  • 유닉스/리눅스/매킨토시/윈도우
    • 유닉스: 컴퓨터를 여러 사람들이 다양한 방법으로 사용할 수 있도록 개발한 운영 체제이며, 현대 컴퓨터의 대부분 운영 체제의 원형
    • 리눅스: 유닉스 호환 커널. 커널의 일종이자 리눅스 커널을 사용하는 운영 체제 자체를 의미하기도 함.
    • 매킨토시:애플에서 개발한 운영체제, 마하 유닉스(마이크로 구조 커널) 사용
    • 윈도우: MS-DOS(플로피디스크 기반의 OS) > 윈도우 출시 (애플 macOS의 그래피 사용자 인터페이스에 영향받아 출시)



  • 운영체제의 역사
    • 일괄 작업 시스템 > 대화형 시스템 > 시분할 시스템 > 분산 시스템 > 클라이언트 - 서버 시스템 > P2P 시스템 > 기타 현대 컴퓨팅 환경(그리드, 클라우드 등등)
    • 오늘날 쓰이는 운영체제의 기능이 어떻게 만들어졌고, 다양한 컴퓨팅 환경이 어떻게 등장했는지 이해할 수 있음
  • CPU 집중 작업 vs 입출력 집중 작업
    • CPU 집중 작업: 대부분의 작업이 CPU만 사용하는 계산 작업에 집중됨. 일괄 작업 시스템에서는 프로그램이 실행되는 동안 다른 입출력이 불가능했기 때문에 이러한 작업이 대부분.
    • 입출력 집중 작업: 대부분의 시간을 주변장치(모니터, 키보드 등)의 입력과 출력에 사용. 대화형 시스템으로 발전한 후에는 사용자가 작업 중간에 입력이 가능해 입력값에 따라 작업의 흐름이 바뀌는 등 다양한 작업을 수행할 수 있게 됨.
  • 시분할 시스템 vs 실시간 시스템
    • 시분할 시스템: CPU 사용 시간을 잘개 쪼개, 각 작업들에 나누어줘 조금씩 계속 처리되게 만듦. 다수의 작업이 동시에 진행되는 것처럼 보이나 양이 너무 많을 경우 우선순위에 있는 작업이 일정 시간 내에 완료되는 걸 보장하지 못함.
    • 실시간 시스템: 일정 시간 내에 작업이 처리되도록 보장하는 시스템 (e.g. 미사일 제어는 특정 시간 안에 완료가 되어야 한다)
  • 그리드 컴퓨팅 vs 클라우드 컴퓨팅
    • 그리드 컴퓨팅 (grid computing): 서로 다른 기종의 컴퓨터들을 묶어 대용량의 컴퓨터 풀을 만들고, 이를 원격지와 연결해 대용량 연산을 수행해주는 컴퓨팅 환경
    • 클라우드 컴퓨팅(cloud computing): 그리드 컴퓨팅 + SaaS(software as a service)를 합친 개념, 언제 어디서나 응용 프로그램/데이터를 사용할 수 있는 컴퓨터 환경


p.s. 그래서 평소에 궁금하던게 'mac제품은 리눅스 계열인가?' 에 대한 것인데 정확히는 리눅스와 조상이 같다고 보는게 맞는 것 같다. 유닉스는 이후에 BSD 계열과 System V계열로 나뉘고, BSD 계열에서 제닉스/SunOS/mac OS X/리눅스 등이 파생된 것. (화장품으로 비유하면 아모레퍼시픽 그룹에서 독립 브랜드인 아이오페/마몽드/이니스프리/에뛰드 등이 설립된 모양이랄까...)

내용 출처: <쉽게 배우는 운영체제>, 조성호

profile
예비 개발자의 기술 블로그 | explore, explore and explore
post-custom-banner

0개의 댓글