logo

운영체제 톺아보기

Computer Science · 5월 21일 · 17 min read
poster

운영체제(OS)는 컴퓨터의 하드웨어 및 소프트웨어 자원을 관리하고 컴퓨터 프로그램에 공통된 서비스를 제공하는 시스템 소프트웨어이다.

시간 공유 운영 체제는 시스템을 효율적으로 사용하기 위해 작업을 예약하고 프로세서 시간, 대용량 저장 장치, 주변 장치 및 기타 자원의 비용 할당을 위한 회계 소프트웨어를 포함할 수도 있다.

입출력 및 메모리 할당과 같은 하드웨어 기능의 경우, 운영체제는 프로그램과 컴퓨터 하드웨어의 중개자 역할을 하지만, 애플리케이션 코드는 일반적으로 하드웨어에 의해 직접 실행되며, OS 기능에 대한 시스템 호출이 빈번하게 이루어지거나 OS 기능에 의해 중단되기도 한다. 운영체제는 휴대폰과 게임기에서 웹 서버와 슈퍼컴퓨터에 이르기까지 컴퓨터를 포함한 많은 기기에 탑재되어 있다.

개인용 컴퓨터 시장에서는 2023년 9월 기준 마이크로소프트의 윈도우가 약 68%의 압도적인 점유율을 차지하고 있으며, 2위는 애플의 맥OS(20%), 3위는 크롬OS를 포함한 각종 리눅스(7%)가 차지하고 있다. 모바일 분야(스마트폰 및 태블릿 포함)에서는 2023년 9월 현재 안드로이드의 점유율이 68.92%, 애플의 iOS와 아이패드OS가 30.42%, 기타 OS가 0.66%를 차지하고 있다. 그 외에도 임베디드 시스템, 실시간 시스템 등 다양한 용도에 특화된 클래스 OS(특수 용도 OS)도 존재한다. 보안에 특화된 운영체제도 존재한다. 일부 운영체제는 시스템 요구사항이 낮은 것도 있다(예: 경량 리눅스 배포판). 또한 시스템 요구사항이 높은 것도 있다.

일부 운영체제는 설치가 필요하거나 구입한 컴퓨터에 사전 설치되어 있는 것(OEM 설치)이 있는 반면, 일부 운영체제는 미디어(예: 라이브 CD)나 플래시 메모리(예: USB 스틱)에서 직접 실행할 수 있는 것도 있다.

역사

초기 컴퓨터는 계산기와 같이 일련의 단일 작업을 수행하도록 만들어졌다. 기본적인 운영체제의 기능은 1950년대에 개발되었는데, 예를 들어, 처리 속도를 높이기 위해 서로 다른 프로그램을 자동으로 연속적으로 실행할 수 있는 상주 모니터 기능 등이 있었다. 운영체제는 1960년대 초까지 현대적이고 복잡한 형태로 존재하지 않았다. 하드웨어 기능이 추가되어 런타임 라이브러리, 인터럽트, 병렬 처리의 사용이 가능해졌고, 1980년대에 개인용 컴퓨터가 보급되면서 대형 컴퓨터에서 사용되는 것과 유사한 개념의 운영체제가 만들어지기 시작했다.

1940년대 초기 전자 디지털 시스템에는 운영체제가 없었다. 당시 전자 시스템은 기계식 스위치의 행이나 플러그 보드의 점퍼 와이어로 프로그래밍되어 있었다. 예를 들어, 군용 탄도표를 만들거나 펀칭된 종이 카드의 데이터로 급여 수표의 인쇄를 제어하는 특수 목적의 시스템이었다. 프로그래밍이 가능한 범용 컴퓨터가 발명된 후, 기계어(펀칭된 종이 테이프에 0과 1의 2진수 문자열로 구성된)가 도입되어 프로그래밍 프로세스의 속도가 빨라졌다(Stern, 1981).

IBM System 360/65 운영자 패널; OS/360은 1966년부터 아폴로 계획에 사용된 컴퓨터를 포함하여 대부분의 IBM 메인프레임 컴퓨터에서 사용되었다. 1950년대 초, 컴퓨터는 한 번에 하나의 프로그램만 실행할 수 있었다. 각 사용자는 제한된 시간 동안만 컴퓨터를 독점적으로 사용할 수 있었고, 예정된 시간이 되면 프로그램과 데이터를 펀칭된 종이 카드 또는 펀칭된 테이프에 가져왔다. 프로그램은 기계에 로드되고 프로그램이 완료되거나 충돌할 때까지 기계가 작동하도록 설정됩니다. 프로그램은 일반적으로 토글 스위치와 패널 조명을 사용하여 전면 패널에서 디버깅할 수 있었다. 앨런 튜링은 초기 맨체스터 마크1 머신에서 이를 마스터했다고 알려져 있으며, 그는 이미 보편적인 튜링 머신의 원리에서 운영체제의 원초적인 개념을 도출해냈다.

이후 기계에는 프로그램 라이브러리가 제공되었고, 사용자의 프로그램에 연결하여 입출력, 컴파일(사람이 읽을 수 있는 기호 코드에서 기계 코드를 생성하는 것) 등의 작업을 지원할 수 있게 되었다. 이것이 현대 운영체제의 기원이다. 하지만 기계는 여전히 한 번에 한 가지 작업만 수행했다. 영국 케임브리지 대학에서 작업 큐는 한 때 작업의 우선순위를 표시하기 위해 색깔이 다른 빨래집게로 테이프를 매달아 놓은 빨랫대(빨랫줄)였다.

1950년대 후반에는 운영체제로 인식할 수 있는 프로그램이 등장하기 시작했다. 인식할 수 있는 가장 초기 사례로 종종 지적되는 것은 1956년 IBM 704에서 출시된 GM-NAA I/O이다. 실제로 자신을 참조한 최초의 사례로 알려진 것은 1959년에 출시된 GM-NAA I/O를 발전시킨 SHARE 운영체제로 알려져 있다. 이 시스템을 설명한 1960년 5월 논문에서 조지 릭먼은 다음과 같이 말했다:

컴퓨터 운영체제의 개발은 프로그램 또는 일련의 프로그램을 컴퓨터에 효율적으로 켜고 끄는 문제를 실질적으로 지원했다.

초기 시스템에 대한 논의에서 흔히 볼 수 있는 유명한 사례 중 하나는 1962년 아틀라스에서 작동하던 아틀라스 수퍼바이저(Atlas Supervisor)이다. 이 시스템을 설명한 1961년 12월의 기사에서 이렇게 언급되고 있는데, '운영체제'라는 문맥은 '시스템이 규칙에 따라 작동한다'라는 맥락에 가깝다. 아틀라스 팀 스스로는 '수퍼바이저'라는 용어를 사용했고, '모니터'와 함께 널리 사용되었다. 브린치 한센(Brinch Hansen)은 이를 "운영체제 역사에서 가장 중요한 돌파구"라고 표현했다.

관련 포스트
post image
머신 코드
컴퓨터 프로그래밍에서 기계어 명령어로 구성된 컴퓨터 코드를 말하며, 컴퓨터의 중앙처리장치(CPU)를 제어하는 데 사용된다. 과거에는 10진법 컴퓨터가 일반적이었지만, 현대 시장에서는 2진법 컴퓨터가 주류다. 이러한 컴퓨터에서 기계 코드는 '컴퓨터가 실제로 읽고 해석하
Computer Science·12월 26일·22 min read
post image
책 디자인 패턴 후기
디자인 패턴: Elements of Reusable Object-Oriented Software(디자인 패턴: 재사용 가능한 객체지향 소프트웨어의 요소)(1994)는 소프트웨어 디자인 패턴을 설명한 소프트웨어 공학 서적이다. 에리히 감마, 리처드 헬름, 랄프 존슨,
Computer Science·12월 16일·16 min read
post image
브라우저 엔진, blink
블링크는 크롬 프로젝트의 일환으로 개발된 브라우저 엔진으로 애플, 구글, 메타, 마이크로소프트, 오페라 소프트웨어, 비발디 테크놀로지스, 어도비, 인텔, IBM, 삼성 등이 참여하고 있으며, 2013년 4월에 처음 발표되었다. 되었다. # 네이밍 블링크의 네이밍은
Computer Science·9월 14일·13 min read
post image
웹프레임워크란?
웹 프레임워크(WF) 또는 웹 애플리케이션 프레임워크(WAF)는 웹 서비스, 웹 리소스, 웹 API를 포함한 웹 애플리케이션 개발을 지원하도록 설계된 소프트웨어 프레임워크이다. 웹 프레임워크는 월드와이드웹에서 웹 애플리케이션을 구축하고 배포하기 위한 표준적인 방법을
Computer Science·7월 24일·11 min read
post image
nextjs의 탄생배경
Next.js는 민간기업 베르셀(Vercel)이 개발한 오픈소스 웹 개발 프레임워크로, 서버 측 렌더링과 정적 웹사이트 생성 기능을 갖춘 리액트 기반 웹 애플리케이션을 제공한다. 리액트 문서에서는 'Node.js로 서버 렌더링된 웹사이트를 구축할 때' 개발자에게 조
Computer Science·7월 14일·16 min read
post image
알고리즘의 정의
수학 및 컴퓨터 과학에서 알고리즘은 일반적으로 특정 문제 클래스를 해결하거나 계산을 수행하는 데 사용되는 엄격한 명령의 유한한 시퀀스이다. 알고리즘은 계산이나 데이터 처리를 수행하기 위한 사양으로 사용된다. 고급 알고리즘은 조건식을 사용하여 코드 실행을 다양한 경로(
Computer Science·7월 4일·29 min read
post image
백그라운드-프로세스에-대해-알아보기
백그라운드 프로세스는 사용자의 개입 없이 무대 뒤에서(즉, 백그라운드에서) 실행되는 컴퓨터 프로세스를 말한다. 이러한 프로세스의 일반적인 작업에는 로깅, 시스템 모니터링, 스케줄링, , 사용자 알림 등이 있다. Windows 시스템에서 백그라운드 프로세스는 사용자
Computer Science·3월 1일·15 min read
post image
프로세스란?
컴퓨팅에서 프로세스는 하나 이상의 스레드에 의해 실행되는 컴퓨터 프로그램의 인스턴스이다. 다양한 프로세스 모델이 존재하며, 일부는 경량화되어 있지만, 거의 모든 프로세스(전체 가상 머신 포함)는 프로그램 코드, 할당된 시스템 자원, 물리적 및 논리적 액세스 권한, 실
Computer Science·2월 16일·26 min read