Page semi-protected

운영체제

Operating system

운영 체제(operating system, OS)는 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램에 공통적인 서비스를 제공하는 시스템 소프트웨어입니다.

시분할 운영 체제는 시스템의 효율적인 사용을 위해 작업을 계획하며 프로세서 시간, 대용량 스토리지, 주변 장치 및 기타 리소스의 비용 할당을 위한 회계 소프트웨어도 포함할 수 있습니다.

입출력메모리 할당과 같은 하드웨어 기능의 경우, 운영 체제는 프로그램과 [1][2]컴퓨터 하드웨어 사이의 중개자 역할을 하지만, 애플리케이션 코드는 보통 하드웨어에 의해 직접 실행되고 OS 기능에 자주 시스템 호출을 하거나 그것에 의해 중단됩니다.운영 체제는 휴대 전화와 비디오 게임 콘솔에서부터 웹 서버와 슈퍼 컴퓨터에 이르기까지 컴퓨터를 포함하는 많은 장치에서 찾아볼 수 있습니다.

개인용 컴퓨터 시장에서는 마이크로소프트 윈도우가 약 75%의 압도적인 시장 점유율을 차지하고 있으며, 애플사의 macOS는 2위(15%), 리눅스의 다양성은 총 3위(3%)[3]를 차지하고 있습니다.모바일 부문([4]스마트폰, 태블릿 포함)에서 안드로이드의 점유율은 2020년 70.82%입니다.2016년 3분기 데이터에 따르면 스마트폰에서 안드로이드의 점유율은 87.5%로 연간 10.3%의 성장률로 압도적이고 애플의 iOS는 12.1%로 시장 점유율이 5.2% 감소한 반면 다른 운영 체제는 0.3%[5]에 불과합니다.리눅스 배포판은 서버와 슈퍼컴퓨팅 부문에서 우세합니다.임베디드 시스템 및 실시간 시스템과 같은 기타 특수한 종류의 운영 체제(특수 목적 운영 체제)[6][7]가 많은 애플리케이션에 존재합니다.보안 중심 운영 체제도 존재합니다.일부 운영 체제는 시스템 요구 사항이 낮습니다(예: 경량 리눅스 배포판).다른 것들은 더 높은 시스템 요구사항을 가질 수 있습니다.

일부 운영 체제는 설치가 필요하거나 구입한 컴퓨터와 함께 사전 설치(OEM 설치)될 수 있으며, 다른 운영 체제는 미디어(즉, 라이브 CD) 또는 플래시 메모리(, USB 스틱)에서 직접 실행될 수도 있습니다.

운영체제 종류

단일 작업 및 다중 작업

단일 작업 시스템은 한 번에 하나의 프로그램만 실행할 수 있는 반면 다중 작업 운영 체제는 두 개 이상의 프로그램을 동시에 실행할 수 있습니다.이는 가용한 프로세서 시간이 여러 프로세스 간에 분할되는 시분할에 의해 달성됩니다.이러한 프로세스는 운영 체제의 작업 스케줄링 서브시스템에 의해 시간 단위로 반복적으로 중단됩니다.멀티태스킹은 선제형과 협력형으로 특징지어질 수 있습니다.선제적 멀티태스킹에서 운영체제는 CPU 시간을 줄이고 각 프로그램에 슬롯을 할당합니다.Linux와 같은 유닉스 계열 운영 체제 및 Amiga와 같은 유닉스 계열이 아닌 운영 체제OS—선제적인 멀티태스킹을 지원합니다.협력 멀티태스킹은 각 프로세스에 의존하여 정의된 방식으로 다른 프로세스에 시간을 제공함으로써 달성됩니다. 16비트 버전의 마이크로소프트 윈도우는 협력 멀티태스킹을, 32비트 버전의 윈도우 NT와 Win9x 모두 선제 멀티태스킹을 사용했습니다.

단일 및 다중 사용자

단일 사용자 운영 체제는 사용자를 구분할 수 있는 기능이 없지만 [8]여러 프로그램을 함께 실행할 수 있습니다.다중 사용자 운영 체제는 다중 사용자가 속한 디스크 공간과 같은 프로세스 및 리소스를 식별하는 설비로 다중 작업의 기본 개념을 확장하며, 이 시스템을 통해 여러 사용자가 동시에 시스템과 상호 작용할 수 있습니다.시분할 운영 체제는 시스템의 효율적인 사용을 위해 작업을 계획하며, 프로세서 시간, 대량 저장, 인쇄 및 기타 리소스를 여러 사용자에게 비용을 할당하는 회계 소프트웨어를 포함할 수도 있습니다.

배포됨

분산 운영 체제는 개별 네트워크 컴퓨터 그룹을 관리하며 모든 계산이 분산(구성 컴퓨터 [9]간에 구분)되기 때문에 단일 컴퓨터인 것처럼 보이게 합니다.

내장된

임베디드 운영체제임베디드 컴퓨터 시스템에 사용되도록 설계되었습니다.자율성이 적은 소형 기계(예: PDA)에서 작동하도록 설계되었습니다.설계상 매우 소형이며 매우 효율적이며 한정된 양의 자원으로 운영할 수 있습니다.Windows CE 및 Minix 3은 내장 운영 체제의 일부 예입니다.

실시간

실시간 운영체제는 특정 순간까지 이벤트나 데이터를 처리하는 것을 보장하는 운영체제입니다.실시간 운영 체제는 단일 또는 멀티태스킹일 수 있지만 멀티태스킹 시에는 전문화된 스케줄링 알고리즘을 사용하여 행동의 결정론적 특성을 달성합니다.이러한 이벤트 중심 시스템은 우선 순위 또는 외부 이벤트에 따라 작업 간을 전환하는 반면, 시분할 운영 체제는 클럭 인터럽트에 따라 작업을 전환합니다.

도서관

라이브러리 운영 체제는 네트워킹과 같은 일반적인 운영 체제가 제공하는 서비스를 라이브러리 형태로 제공하고 애플리케이션 및 구성 코드로 구성하여 클라우드나 임베디드[further explanation needed] 환경에 배포할 수 있는 특수 단일 주소 공간, 시스템 이미지 등의 유니커널을 구성하는 시스템입니다.

역사

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

1940년대 초기의 전자 디지털 시스템에는 운영 체제가 없었습니다.이 시대의 전자 시스템은 기계식 스위치의 줄이나 플러그보드의 점퍼선에 의해 프로그래밍되었습니다.예를 들어, 이러한 시스템은 특수한 목적을 위해 군대용 탄도표를 생성하거나 천공된 종이 카드의 데이터로부터 급여 체크를 출력하는 것을 제어하는 시스템이었습니다.프로그래밍이 가능한 범용 컴퓨터가 발명된 후, 프로그래밍 과정을 가속화하는 기계 언어(펀칭된 종이 테이프의 이진 숫자 0과 1의 문자열로 구성됨)가 도입되었습니다(스턴, 1981).[full citation needed]

OS/360은 1966년부터 대부분의 IBM 메인프레임 컴퓨터에서 사용되었으며, 아폴로 프로그램에서 사용된 컴퓨터도 포함됩니다.

1950년대 초, 컴퓨터는 한 번에 하나의 프로그램만 실행할 수 있었습니다.각 사용자는 제한된 기간 동안 컴퓨터를 단독으로 사용했으며 프로그램과 데이터를 천공된 종이 카드 또는 천공 테이프에 저장하여 예정된 시간에 도착했습니다.프로그램이 기계에 로드되고 프로그램이 완료되거나 충돌할 때까지 기계가 작동하도록 설정됩니다.일반적으로 토글 스위치와 패널 조명을 사용하여 전면 패널을 통해 프로그램을 디버깅할 수 있습니다.앨런 튜링은 초기 맨체스터 마크 1 머신에서 이에 대한 대가였으며, 그는 이미 보편적 튜링 [10]머신의 원리로부터 운영체제에 대한 원시적인 개념을 도출하고 있었다고 합니다.

이후의 기계들은 입력과 출력, 컴파일과 같은 작업을 지원하기 위해 사용자의 프로그램과 연결된 프로그램 라이브러리를 제공했습니다(인간이 읽을 수 있는 기호 코드로부터 기계 코드를 생성하는 것.이것이 현대 운영체제의 시초였습니다.그러나 기계는 한 번에 하나의 작업을 실행했습니다.영국의 캠브리지 대학에서는 한 때 직업의 [citation needed]우선순위를 나타내기 위해 테이프에 다른 색깔의 옷가지를 거는 세탁선(옷줄)이었습니다.

1950년대 후반에는 운영체제로 인식할 수 있는 프로그램이 등장하기 시작했습니다.가장 먼저 인식 가능한 예로 자주 언급되는 것은 1956년 IBM 704에 출시된 GM-NAA I/O입니다.실제로 언급된 최초의 사례는 1959년에 출시된 GM-NAA I/O의 개발품인 SHARE Operating System이었습니다.1960년 5월 조지 릭먼(George Ryckman)은 시스템에 대해 다음과 같이 기술했습니다.

컴퓨터 운영 체제의 발달은 컴퓨터에 프로그램이나 일련의 프로그램을 [11]효율적으로 켜고 끄는 문제를 실질적으로 도왔습니다.

초기 시스템에 대한 논의에서 종종 발견되는 가장 유명한 예 중 하나는 [12]1962년에 아틀라스에서 실행된 아틀라스 슈퍼바이저입니다.1961년 12월에 시스템을 설명하는 기사에서 그렇게 언급되었지만, "운영 체제"의 맥락은 "시스템이 유행에 따라 작동한다"의 노선에 더 가깝습니다.아틀라스 팀 자체는 모니터와 함께 널리 사용되는 "슈퍼바이저"[13]라는 용어를 사용했습니다.Brinch Hansen은 이를 "운영 [14]체제 역사상 가장 중요한 돌파구"라고 설명했습니다.

메인프레임

1950년대에 걸쳐 메인프레임 컴퓨터의 운영 체제 분야에서 많은 주요 기능들이 개척되었는데, 배치 처리, 입출력 중단, 버퍼링, 멀티태스킹, 스풀링, 런타임 라이브러리, 링크 로딩 및 파일의 레코드 정렬을 위한 프로그램 등이 여기에 포함됩니다.이러한 기능은 모든 응용 프로그램에서 사용하는 별도의 운영 체제가 아니라 응용 프로그램 프로그래머의 선택에 따라 응용 프로그램 소프트웨어에 포함되거나 포함되지 않았습니다.1959년에 SHARE 운영 체제IBM 704와 709 및 7090 메인프레임을 위한 통합 유틸리티로 출시되었지만 709, 7090 및 7094의 IBSYS/IBJOB에 의해 빠르게 대체되었으며, 이는 이후 7040-PR-150(7040/7044) 및 1410-PR-155(1410/7010) 운영 체제에 영향을 미쳤습니다.

1960년대 IBM의 OS/360은 전체 제품군에 걸친 단일 OS 개념을 도입했는데, 이는 시스템/360 머신의 성공에 결정적이었습니다.IBM의 현재 메인프레임 운영 체제는 이 원래 시스템의 먼 후손이며, 최신 컴퓨터는 OS/[citation needed]360용으로 작성된 애플리케이션과 역호환됩니다.

OS/360은 운영 체제가 주 메모리의 프로그램 및 데이터 공간 할당, 보조 스토리지의 파일 공간 할당, 업데이트파일 잠금 등 사용되는 모든 시스템 리소스를 추적한다는 개념도 개척했습니다.어떤 이유로든 프로세스가 종료되면 운영 체제에서 이 모든 리소스를 재청구합니다.

S/360-67의 대체 CP-67 시스템은 가상 머신의 개념에 초점을 맞춘 IBM 운영 체제의 전 라인을 시작했습니다.IBM S/360 시리즈 메인프레임에 사용되는 다른 운영 체제로는 IBM이 개발한 시스템, 즉 DOS[a]/360 (디스크 운영 체제), TSS/360 (타임 셰어링 시스템), TOS/360 (테이프 운영 체제), BOS/360 (기본 운영 체제), ACP (항공사 제어 프로그램) 등이 있으며, 일부 비IBM 시스템: MTS (미시간 터미널 시스템), MUSIC (멀티유저 시스템)Tem for Interactive Computing) 및 ORVYL(스탠퍼드 타임셰어링 시스템).

Control Data Corporation은 1960년대에 일괄 처리를 위한 SCOPE 운영 체제를 개발했습니다.1970년대에 미네소타 대학교와 협력하여 크로노스와 이후 NOS 운영 체제를 개발하여 일괄 배치와 시간 공유를 동시에 사용할 수 있도록 지원했습니다.많은 상용 타임셰어링 시스템과 마찬가지로, 인터페이스는 타임셰어링과 프로그래밍 언어의 선구적인 노력 중 하나인 다트머스 베이직 운영 체제의 확장이었습니다.1970년대 후반, Control Data와 University of Illinois는 플라즈마 패널 디스플레이와 장거리 시간 공유 네트워크를 사용하는 PLATO 운영 체제를 개발했습니다.Plato는 실시간 채팅과 다중 사용자 그래픽 게임을 특징으로 하는 당시로서는 매우 혁신적이었습니다.

1961년, 버로우즈 사는 MCP (Master Control Program) 운영 체제와 함께 B5000을 선보였습니다.B5000은 어셈블러 [b]없이 고급 언어만을 지원하도록 설계된 스택 머신이었습니다. 실제로 MCP는 고급 언어(ALGOL의 방언인 ESPOL)로만 작성된 최초의 OS였습니다.MCP는 가상 메모리의 최초 상업적 구현과 같은 다른 혁신적인 기술들도 많이 도입했습니다.MCP는 Unisys 사의 MCP/ClearPath 컴퓨터 계열에서 오늘날에도 여전히 사용되고 있습니다.

최초의 상용 컴퓨터 제조업체인 UNIVAC는 EXEC 운영 [15][16][17]체제를 생산했습니다.모든 초기 메인프레임 시스템과 마찬가지로, 이 배치 지향 시스템은 마그네틱 드럼, 디스크, 카드 리더, 라인 프린터를 관리했습니다.1970년대에 UNIVAC는 대규모 시간 공유를 지원하기 위해 실시간 기본(RTB) 시스템을 생산했으며, 이 또한 다트머스 BC 시스템을 본떠서 패턴화되었습니다.

제너럴 일렉트릭은 주로 일괄 처리를 지원하는 GECOS(General Electric Comprehensive Operating Supervisor)를 개발했습니다.허니웰이 인수한 후 GCOS(General Comprehensive Operating System)로 이름이 바뀌었습니다.

Bell Labs,[c] General Electric 및 MIT는 다중화된 정보 및 컴퓨팅 서비스(Multiplexed Information and Computing Service, Multics)를 개발하여 링형 보안 권한 수준의 개념을 도입했습니다.

Digital Equipment Corporation은 36비트 PDP-10 클래스 시스템을 위한 TOPs-10TOPs-20 시분할 시스템을 포함한 다양한 컴퓨터 라인을 위한 많은 운영 체제를 개발했습니다.UNIX가 널리 사용되기 전에 TOPs-10은 대학과 초기 ARPANET 커뮤니티에서 특히 인기 있는 시스템이었습니다.RT-11PDP-11급 미니컴퓨터를 위한 단일 사용자 실시간 OS였고 RSX-11은 해당 다중 사용자 OS였습니다.

1960년대 후반부터 1970년대 후반까지 여러 하드웨어 기능이 발전하여 유사하거나 포팅된 소프트웨어를 하나 이상의 시스템에서 실행할 수 있게 되었습니다.초기의 시스템은 마이크로프로그래밍을 사용하여 시스템에 기능을 구현하여 다양한 기본 컴퓨터 아키텍처가 시리즈의 다른 아키텍처와 동일하게 보이도록 했습니다.사실, 360/40 이후의 대부분의 360s(360/44, 360/75, 360/91, 360/95 및 360/195 제외)는 마이크로프로그래밍 구현이었습니다.

1960년대 이후 만들어진 이러한 시스템을 위한 소프트웨어에 대한 엄청난 투자는 대부분의 원래 컴퓨터 제조업체들이 하드웨어와 함께 호환되는 운영 체제를 계속 개발하게 만들었습니다.지원되는 주요 메인프레임 운영 체제는 다음과 같습니다.

마이크로컴퓨터

PC DOS는 명령줄 인터페이스를 특징으로 하는 초기 개인용 컴퓨터 OS였습니다.

최초의 마이크로컴퓨터는 메인프레임 및 미니용으로 개발된 정교한 운영 체제를 위한 용량이나 필요성이 없었습니다. 미니멀리즘 운영 체제는 종종 ROM에서 로드되고 모니터로 알려지는 개발되었습니다.주목할 만한 초기 디스크 운영 체제 중 하나는 CP/M으로 초기 마이크로컴퓨터에서 지원되었으며 마이크로소프트의 MS-DOS의해 밀접하게 모방되었으며 IBM PC용으로 선택된 운영 체제로 널리 인기를 끌었습니다(IBM 버전은 IBM DOS 또는 PC DOS라고 불림).1980년대에 Apple Computer Inc.(현재 Apple Inc.)혁신적인 그래픽 사용자 인터페이스(GUI)를 갖춘 Apple Macintosh 컴퓨터를 Mac OS에 소개하기 위해 인기 있는 Apple II 시리즈 마이크로컴퓨터를 포기했습니다.

1985년 [18]10월 32비트 아키텍처 및 페이징 기능을 갖춘 인텔 80386 CPU 칩이 출시되면서 개인용 컴퓨터는 이전 미니 컴퓨터 및 메인프레임과 같은 멀티태스킹 운영 체제를 실행할 수 있게 되었습니다.마이크로소프트는 이러한 진전에 부응하여 Digital Equipment Corporation의 VMS 운영 체제를 개발한 Dave Cutler를 고용했습니다.그는 마이크로소프트의 운영 체제 라인의 기초 역할을 계속하고 있는 윈도우 NT 운영 체제의 개발을 이끌게 될 것입니다.애플 사의 공동 설립자인 스티브 잡스는 넥스트스텝 운영체제를 개발한 넥스트 컴퓨터를 설립했습니다.NeXTSTEP은 나중에 Apple Inc.에 인수되어 FreeB의 코드와 함께 사용됩니다.맥 OS X(최신 명칭 변경 후 macOS)의 핵심으로 SD.

GNU 프로젝트는 활동가이자 프로그래머인 리처드 스톨먼이 독점적인 유닉스 운영 체제를 완전한 무료 소프트웨어로 대체하는 것을 목표로 시작했습니다.이 프로젝트는 유닉스의 여러 부분의 기능을 복제하는 데 크게 성공했지만, GNU 허드 커널의 개발은 비생산적임이 입증되었습니다.1991년, 핀란드의 컴퓨터 과학 학생인 Linus Torvalds는 인터넷을 통해 협력하는 자원봉사자들의 협력으로 Linux 커널의 첫 번째 버전을 발표했습니다.GNU 사용자 공간 구성 요소와 시스템 소프트웨어와 통합되어 완전한 운영 체제가 되었습니다.그 이후로 두 주요 구성 요소의 조합은 일반적으로 소프트웨어 업계에서 단순히 "리눅스"라고 불리는데, 이는 스톨먼과 자유 소프트웨어 재단이 GNU/리눅스라는 이름을 선호하면서 반대하고 있는 명명 규칙입니다.버클리 소프트웨어 배포판(Berkeley Software Distribution, BSD)은 1970년대부터 캘리포니아 대학교 버클리에서 배포한 UNIX 파생 제품입니다.많은 미니 컴퓨터에 자유롭게 배포되고 포팅된 이 제품은 결국 PC에서 사용할 수 있는 FreeBSD, NetBSD, OpenBSD 등을 얻게 되었습니다.

유닉스 및 유닉스 계열 운영 체제

유닉스 시스템의 진화

유닉스는 원래 어셈블리어[19]쓰여졌습니다. 톰슨(Ken Thompson)은 주로 BCPL을 기반으로 MULTICS 프로젝트에서의 경험을 바탕으로 B를 썼습니다.B는 C로 대체되었고, C로 다시 작성된 유닉스는 현대의 모든 운영 체제에서 영향력을 발휘한 대규모의 복잡한 상호 관련 운영 체제 계열로 발전했습니다(역사 참조).

유닉스 계열은 운영 체제의 다양한 그룹으로, 시스템 V, BSD, 리눅스여러 주요 하위 범주가 있습니다."UNIX"라는 이름은 The Open Group의 상표로 정의에 부합하는 것으로 나타난 모든 운영 체제에서 사용할 수 있도록 라이센스를 부여합니다."UNIX-like"는 원래의 UNIX와 비슷한 운영 체제의 큰 집합을 가리키는 데 일반적으로 사용됩니다.

유닉스 계열의 시스템은 다양한 컴퓨터 아키텍처에서 실행됩니다.비즈니스에서 서버용으로 많이 사용되고, 학술엔지니어링 환경에서 워크스테이션용으로도 많이 사용됩니다.리눅스BSD같은 무료 UNIX 변형이 이러한 영역에서 인기가 있습니다.

오픈 그룹(유닉스 상표 보유자)이 유닉스로 인증한 운영 체제는 5개입니다.HP의 HP-UXIBM의 AIX는 모두 원래 System V Unix의 하위 제품이며 해당 공급업체의 하드웨어에서만 실행되도록 설계되었습니다.이와 대조적으로 Sun MicrosystemsSolarisx86SPARC 서버와 PC를 포함한 여러 종류의 하드웨어에서 실행할 수 있습니다.애플의 초기(비유닉스) 클래식 맥 OS를 대체하는 맥OS넥스트스텝, 마하, FreeBSD에서 파생된 하이브리드 커널 기반 BSD 변종입니다.IBM의 z/OS UNIX 시스템 서비스에는 Mortice Kerns의 InterOpen 제품을 기반으로 하는 셸과 유틸리티가 포함되어 있습니다.

POSIX 표준을 제정하여 Unix 상호 운용성을 모색했습니다.POSIX 표준은 원래 다양한 유닉스 변형을 위해 만들어졌지만, 모든 운영 체제에 적용될 수 있습니다.

BSD와 그 후손들

월드 와이드 웹의 첫 번째 서버는 BSD에 기반한 NeXTSTEP에서 실행되었습니다.

유닉스 계열의 하위 그룹은 FreeBSD, NetBSD, OpenBSD포함하는 버클리 소프트웨어 배포 계열입니다.이러한 운영 체제는 개인용 컴퓨터 OS로도 기능할 수 있지만 웹 서버에서 가장 흔히 볼 수 있습니다.인터넷은 현재 컴퓨터가 네트워크를 통해 데이터를 연결하고 보내고 수신하기 위해 일반적으로 사용하는 많은 프로토콜이 BSD에서 널리 구현되고 정제되었기 때문에 BSD의 존재에 많은 기여를 했습니다.월드 와이드 웹은 또한 넥스트스텝(NEXTSTEP)이라 불리는 BSD 기반의 OS를 실행하는 다수의 컴퓨터에서 처음으로 시연되었습니다.

1974년 캘리포니아 대학교 버클리는 최초의 유닉스 시스템을 설치했습니다.시간이 지나면서, 그곳의 컴퓨터 과학과 학생들과 직원들은 텍스트 편집기와 같은 일들을 더 쉽게 만들기 위해 새로운 프로그램들을 추가하기 시작했습니다.1978년 버클리 대학이 유닉스가 설치된 새로운 VAX 컴퓨터를 받았을 때, 이 학교의 학부생들은 컴퓨터의 하드웨어 가능성을 활용하기 위해 유닉스를 훨씬 더 많이 수정했습니다. 국방부 국방고등연구사업국이 관심을 갖고 사업비를 지원하기로 했습니다.많은 학교, 기업, 정부 기관들이 주목했고 AT&T가 배포하는 공식 유닉스 대신 버클리 버전을 사용하기 시작했습니다.

스티브 잡스는 1985년 애플사를 떠나자마자 넥스트스텝(NeXTSTEP)이라고 불리는 BSD의 변형으로 작동하는 고급 컴퓨터를 제조하는 회사인 넥스트스텝(NeXT Inc.)설립했습니다.이러한 컴퓨터 중 하나는 팀 버너스 리가 월드 와이드 웹을 만든 최초의 웹 서버로 사용했습니다.

Keith Bostic과 같은 개발자들은 Bell Labs에서 시작된 무료 코드를 대체하기 위해 프로젝트를 장려했습니다.하지만 이 일이 일단락되자 AT&T는 소송을 제기했습니다.2년간의 법적 분쟁 끝에 BSD 프로젝트는 NetBSDFreeBSD(1993년 둘 다), OpenBSD(1995년 NetBSD에서)와 같은 수많은 무료 파생 제품을 탄생시켰습니다.

맥OS

macOS(이전에는 "Mac OS X", 이후에는 "OS X")는 Apple Inc.에서 개발, 마케팅 및 판매한 개방형 코어 그래픽 운영 체제 라인으로, 현재 출하되는 모든 Macintosh 컴퓨터에 최신 버전이 사전 탑재되어 있습니다. macOS는 1984년부터 Apple의 주요 운영 체제였던 원래의 고전적인 Mac OS의 후속 제품입니다.전작과 달리 macOS는 1980년대 후반부터 1997년 초 애플이 회사를 인수하기 전까지 NeXT에서 개발된 기술을 기반으로 만들어진 유닉스 운영 체제입니다.운영 체제는 1999년에 맥 OS X 서버 1.0으로 처음 출시되었으며, 2001년 3월에 클라이언트 버전(맥 OS X v10.0 "치타")으로 출시되었습니다.그 이후로 맥OS의 6개의 다른 "클라이언트" 에디션과 "서버" 에디션이 출시되었으며 이후 둘은 OS X 10.7 "Lion"에서 통합되었습니다.

macOS와 합병하기 전에 서버 에디션(macOS Server)은 데스크톱과 구조적으로 동일했으며 대개 Apple의 Macintosh 서버 하드웨어 제품군에서 실행되었습니다. macOS Server에는 메일 전송 Ag를 포함한 주요 네트워크 서비스에 대한 단순한 액세스를 제공하는 작업 그룹 관리 및 관리 소프트웨어 도구가 포함되어 있었습니다.ent, Samba 서버, LDAP 서버, 도메인 네임 서버 등입니다.Mac OS X v10.7 Lion을 사용하면 Mac OS X Server의 모든 서버가 클라이언트 버전으로 통합되어 제품이 "OS X"로 브랜드 변경되었습니다(이름에서 "Mac"을 삭제).서버 도구는 이제 [20]응용 프로그램으로 제공됩니다.

z/OS UNIX 시스템 서비스

MVS/ESA System Product Version 4 Release 3의 OpenEdition 업그레이드로 처음 소개되었으며[21], POSIX 및 기타 [22][23][24]표준을 지원하며 1993년 2월 발표되었습니다. z/OS UNIX 시스템 서비스MVS 서비스 위에 구축되어 있으며 독립적으로 실행할 수 없습니다.IBM은 FIPS 요구사항을 충족하기 위해 OpenEdition을 처음 도입했지만, 현재 몇몇 z/OS 구성요소에는 TCP/IP와 같은 UNIX 서비스가 필요합니다.

리눅스

Ubuntu, 데스크톱 리눅스 배포판
유닉스 계열 운영 체제인 리눅스는 1991년 9월 17일 리누스 토르발스[25][26][27]의해 처음 출시되었습니다.리눅스의 [28]마스코트 펭귄 턱스 사진

리눅스 커널은 핀란드의 대학생 시절인 1991년 리누스 토르발스의 프로젝트로 시작되었습니다.그는 컴퓨터 학생들과 프로그래머들을 위한 뉴스 그룹에 자신의 프로젝트에 대한 정보를 올렸고, 완벽하고 기능적인 커널을 만드는 데 성공한 자원봉사자들의 지원과 도움을 받았습니다.

리눅스유닉스와 비슷하지만 BSD나 그 변형과는 달리 유닉스 코드 없이 개발되었습니다.리눅스 커널 코드는 개방형 라이선스 모델로 인해 연구 및 수정이 가능하며, 이로 인해 슈퍼컴퓨터에서 스마트워치에 이르기까지 광범위한 컴퓨팅 기계에 사용할 수 있게 되었습니다.추정치에 따르면 Linux는 전체 "데스크톱"(또는 노트북)[3] PC의 2.81%에서만 사용되고 있지만 서버 및 휴대폰과 같은 임베디드[29][30] 시스템에서 널리 사용되고 있습니다.

Linux는 많은 플랫폼에서 Unix를 대체했으며 TOP500 [31]목록에 포함된 가장 강력한 500대 슈퍼컴퓨터를 포함한 대부분의 슈퍼컴퓨터에 사용되어 2017년까지 모든 경쟁업체를 대체했습니다.리눅스는 스마트폰이나 스마트워치와 같은 다른 작은 에너지 효율적인 컴퓨터에서도 흔히 사용됩니다.리눅스 커널은 Red Hat, Debian, Ubuntu, Linux Mint와 Google의 Android, ChromeOS, Chrome과 같은 일부 인기있는 배포판에서 사용됩니다.OS.

마이크로소프트 윈도우

Microsoft Windows는 Microsoft Corporation이 설계한 독점 운영 체제 제품군으로 주로 x86 아키텍처 기반 컴퓨터를 대상으로 하며 웹 연결 [32][33][34][35]컴퓨터의 총 사용 점유율은 약 88.9%입니다.최신 버전은 윈도우 11입니다.

마이크로소프트 윈도우는 1985년에 대부분의 인텔 아키텍처 개인용 컴퓨터에 탑재된 표준 운영 체제인 MS-DOS 위에서 실행되는 운영 환경으로 처음 출시되었습니다.1995년에는 MS-DOS만을 부트스트랩으로 사용하는 윈도우 95가 출시되었습니다.이전 버전과의 호환성을 위해 Win9x는 실제 모드[36][37] MS-DOS와 16비트 Windows 3.x[38] 드라이버를 실행할 수 있습니다.2000년에 출시된 윈도우 ME는 윈도우 9x 제품군의 마지막 버전입니다.이후 버전들은 모두 윈도우 NT 커널에 기반을 두고 있습니다.현재 클라이언트 버전의 Windows는 IA-32,[39] x86-64Arm 마이크로프로세서에서 실행됩니다.또한 Itanium은 이전 서버 버전인 Windows Server 2008 R2에서도 여전히 지원됩니다.과거에는 Windows NT에서 추가 아키텍처를 지원했습니다.

윈도우의 서버 에디션은 널리 사용되고 있지만, 윈도우가 리눅스 및 BSD와 서버 시장 [40][41]점유율을 놓고 경쟁하고 있기 때문에 윈도우의 서버 사용은 개인용 컴퓨터만큼 널리 사용되지는 않습니다.

리액트OS는 마이크로소프트의 코드를 사용하지 않고 윈도우의 원칙에 따라 개발되고 있는 윈도우 대체 운영 체제입니다.

다른.

Amiga와 같이 당대에는 중요한 운영 체제가 있었지만 지금은 그렇지 않은 운영 체제가 많습니다.OS, IBM 및 Microsoft의 OS/2, Apple macOS의 비 Unix 전신인 클래식 Mac OS, BeOS, XTS-300, RISC OS, MorpOS, Haiku, BareMetalFreeMint.일부는 여전히 틈새 시장에서 사용되며 매니아 커뮤니티와 전문 애플리케이션을 위한 소수 플랫폼으로 계속 개발되고 있습니다.

IBM z/Architecture 메인프레임 컴퓨터용 z/OS 운영 체제는 여전히 사용 및 개발 중이며, OpenVMS는 이전 DEC에서 개발한 것으로 VMS Software Inc.에서 아직도 활발하게 개발 중입니다.IBM AS/400IBM Power Systems 미드레인지 컴퓨터용 IBM i 운영 체제도 여전히 사용 및 개발 중입니다.

그러나 다른 운영 체제는 학계, 운영 체제 교육 또는 운영 체제 개념 연구를 위해 거의 독점적으로 사용됩니다.두 가지 역할을 모두 수행하는 시스템의 전형적인 예는 MINIX이며, 를 들어 특이점은 순수하게 연구를 위해 사용됩니다.또 다른 예는 1980년대에 Niklaus Wirth, Jürg Gutknecht 및 구 컴퓨터 시스템 연구소의 학생들이 ETH 취리히에서 설계한 오베론 시스템입니다.그것은 주로 Wirth의 그룹에서 연구, 교수, 그리고 일상적인 일하는데 사용되었습니다.

다른 운영 체제들은 상당한 시장 점유율을 확보하는 데는 실패했지만, 주류 운영 체제에 영향을 미친 혁신을 도입했으며, 특히 Bell Labs의 Plan 9도 그 중 하나입니다.

구성 요소들

운영 체제의 구성 요소들은 컴퓨터의 여러 부분들이 함께 작동하도록 하기 위해 모두 존재합니다.모든 사용자 소프트웨어는 마우스나 키보드처럼 간단한 하드웨어든 인터넷 구성 요소처럼 복잡한 하드웨어를 사용하기 위해 운영 체제를 거쳐야 합니다.

알맹이

커널은 응용 소프트웨어를 컴퓨터의 하드웨어에 연결합니다.

펌웨어 및 장치 드라이버의 도움으로 커널은 컴퓨터의 모든 하드웨어 장치에 대한 가장 기본적인 수준의 제어를 제공합니다.RAM의 프로그램에 대한 메모리 액세스를 관리하고, 어떤 프로그램이 어떤 하드웨어 리소스에 액세스할 수 있는지를 결정하고, CPU의 동작 상태를 항상 최적으로 설정하거나 재설정하며, 디스크, 테이프, 플래시 메모리 등의 미디어에 파일 시스템을 설치하여 장기 비휘발성 저장을 위한 데이터를 정리합니다.

프로그램실행

운영 체제는 응용 프로그램과 컴퓨터 하드웨어 간의 인터페이스를 제공하여 응용 프로그램이 운영 체제에 프로그래밍된 규칙과 절차를 준수해야만 하드웨어와 상호 작용할 수 있습니다.운영 체제는 응용 프로그램의 개발과 실행을 단순화하는 일련의 서비스이기도 합니다.응용 프로그램을 실행하는 것은 일반적으로 운영 체제 커널에 의한 프로세스의 생성을 수반하는데, 이는 메모리 공간 및 기타 자원을 할당하고, 멀티태스킹 시스템에서 프로세스에 대한 우선순위를 설정하고, 프로그램 바이너리 코드를 메모리에 로드하고, 응용 프로그램의 실행을 개시하는 것,그런 다음 사용자와 하드웨어 장치와 상호 작용합니다.그러나 일부 시스템에서 응용 프로그램은 운영 체제가 서브루틴으로 또는 OS/360후속 프로그램LINKATTACH 기능과 같은 별도의 스레드에서 동일한 프로세스 내에서 다른 응용 프로그램을 실행하도록 요청할 수 있습니다.

인터럽트

인터럽트(중단, 예외, 장애, 신호[42][43]트랩이라고도 함)는 대부분의 운영 체제가 환경에 대응할 수 있는 효율적인 방법을 제공합니다.인터럽트는 중앙 처리 장치(CPU)가 현재 실행 중인 프로그램에서 인터럽트 서비스 루틴(ISR)[44][45]이라고도 하는 인터럽트 핸들러로 제어 흐름이 변경되도록 합니다.인터럽트 서비스 루틴으로 인해 중앙 처리 장치(CPU)에 컨텍스트 [46][d]스위치가 발생할 수 있습니다.컴퓨터가 인터럽트를 처리하는 방법에 대한 세부 사항은 아키텍처마다 다르고, 인터럽트 서비스 루틴이 작동하는 방법에 대한 세부 사항은 운영 [47]체제마다 다릅니다.그러나 몇 가지 인터럽트 기능이 [47]일반적입니다.아키텍처 및 운영 체제는 다음을 수행해야 합니다.[47]

  1. 인터럽트 서비스 루틴에 제어권을 이전합니다.
  2. 현재 실행 중인 프로세스의 상태를 저장합니다.
  3. 인터럽트가 서비스된 후 상태를 복원합니다.
소프트웨어 인터럽트

소프트웨어 인터럽트는 이벤트가 [42]발생한 프로세스에 대한 메시지입니다.이는 이벤트가 [48]발생했음을 중앙 처리 장치(CPU)에 전달하는 메시지인 하드웨어 인터럽트와 대비됩니다.소프트웨어 인터럽트는 하드웨어 인터럽트와 유사합니다. 현재 실행 [49]중인 프로세스와는 다른 변화가 있습니다.마찬가지로 하드웨어와 소프트웨어 인터럽트 모두 인터럽트 서비스 루틴을 실행합니다.

소프트웨어 중단은 일반적으로 발생하는 이벤트일 수 있습니다.타임슬라이스가 발생할 것으로 예상되므로 커널은 컨텍스트 [50]전환을 수행해야 합니다.컴퓨터 프로그램은 너무 많은 데이터로 인해 알고리즘이 너무 [51]오래 걸릴 경우 몇 초 후에 타이머가 꺼지도록 설정할 수 있습니다.

소프트웨어 인터럽트는 잘못된 [51]기계 명령과 같은 오류 상태일 수 있습니다.그러나 가장 일반적인 오류 조건은 0으로 나누는 것과 잘못된 메모리 [51]주소에 액세스하는 입니다.

사용자는 현재 실행 중인 [51]프로세스의 동작을 수정하기 위해 커널에 메시지를 보낼 수 있습니다.예를 들어 명령줄 환경에서 인터럽트 문자(일반적으로 Control-C)를 누르면 현재 실행 중인 [51]프로세스가 종료될 수 있습니다.

x86 CPU에 대한 소프트웨어 인터럽트를 생성하기 위해 INTassembly 언어 명령을 사용할 [52]수 있습니다.구문은INT X,어디에X인터럽트 벡터 테이블에 대한 오프셋 번호(16진수 형식)입니다.

신호.

유닉스 계열 운영 체제에서 소프트웨어 인터럽트를 생성하기 위해,kill(pid,signum) 시스템 호출은 다른 [53]프로세스로 신호를 보냅니다. pid는 수신 프로세스의 프로세스 식별자입니다.signum는 전송할 신호 번호(네모닉 형식)[e]입니다. (마모닉 이름:kill초기 구현으로 인해 프로세스만 종료되었기 때문에 선택되었습니다.)[54]

유닉스 계열 운영 체제에서 신호는 비동기 [53]이벤트 발생 프로세스를 알려줍니다.비동기적으로 통신하려면 인터럽트가 [55]필요합니다.프로세스가 다른 프로세스와 비동기적으로 통신해야 하는 한 가지 이유는 고전적인 리더/라이터 [56]문제의 다양성을 해결합니다.작성자는 에서 출력물을 판독기의 [57]입력 스트림으로 전송하기 위한 파이프를 받습니다.명령줄 구문은alpha bravo.alpha계산이 준비되면 파이프에 쓰고 대기열에서 [58]잠을 잡니다. bravo그러면 준비 대기열로 이동되고 곧 입력 [59]스트림에서 읽힙니다.커널은 [59]배관을 조정하기 위한 소프트웨어 인터럽트를 생성할 것입니다.

신호는 7가지로 [53]분류할 수 있습니다.범주는 다음과 같습니다.

  1. 공정이 정상적으로 종료될 때.
  2. 프로세스에 오류 예외가 있는 경우.
  3. 프로세스에서 시스템 리소스가 부족한 경우.
  4. 프로세스가 불법적인 명령을 실행하는 경우.
  5. 프로세스가 알람 이벤트를 설정할 때.
  6. 프로세스가 키보드에서 중단되었을 때.
  7. 프로세스에 디버깅에 대한 추적 알림이 있는 경우.
하드웨어 인터럽트

입출력(I/O) 장치가 CPU보다 느립니다.따라서 CPU가 각 I/O가 끝날 때까지 기다려야 한다면 컴퓨터 속도가 느려집니다.대신, 컴퓨터는 I/O 완료를 위한 인터럽트를 구현하여 폴링이나 바쁜 [60]대기를 피할 수 있습니다.

일부 컴퓨터에서는 각 문자나 단어에 대한 인터럽트가 필요하여 CPU 시간이 많이 소요됩니다.DMA(Direct Memory Access)[62][g]는 디바이스들이 CPU를 바이패스하여 메인 메모리에 직접 액세스할 [61]있도록 하는 아키텍처 기능입니다. (아키텍처와 별개로 디바이스는 메인 메모리에 직접 또는 버스를 통해 직접 메모리[f] 액세스를 수행할 수 있습니다.)

입력/출력

인터럽트 구동 I/O

컴퓨터 사용자가 키보드에 키를 입력하면 일반적으로 문자가 화면에 바로 나타납니다.마찬가지로 사용자가 마우스를 움직이면 커서가 화면을 가로질러 즉시 이동합니다.각 키 입력 및 마우스 움직임은 Interrupt-driven I/O라는 인터럽트를 생성합니다.인터럽트 기반 I/O는 프로세스가 전송되는 모든[62] 문자나[63] 단어에 대해 인터럽트를 일으킬 때 발생합니다.

직접 메모리 액세스

하드 디스크 드라이브, 솔리드 스테이트 드라이브 및 마그네틱 테이프 드라이브와 같은 장치는 전송되는 바이트나 워드 단위로 CPU를 중단시키고 장치와 메모리 간에 바이트나 워드 단위로 CPU를 전송하도록 할 정도로 충분히 높은 속도로 데이터를 전송할 수 있습니다.대신 데이터는 채널이나 직접 메모리 액세스 컨트롤러와 같은 하드웨어를 통해 CPU와 독립적으로 장치와 메모리 간에 전송되며, 인터럽트는 모든 데이터가 [64]전송될 때만 전송됩니다.

컴퓨터 프로그램이 블록 I/O 쓰기 작업을 수행하기 위해 시스템 호출을 실행하는 경우 시스템 호출은 다음 명령을 실행할 수 있습니다.

  • CPU 레지스터(프로그램 카운터 포함)의 내용을 프로세스 제어 [65]블록에 설정합니다.
  • device-status [66]테이블에 항목을 만듭니다.운영 체제는 어떤 프로세스가 어떤 장치를 기다리고 있는지를 추적하기 위해 이 테이블을 유지합니다.표의 한 필드는 프로세스 제어 블록의 메모리 주소입니다.
  • 장치에 보낼 모든 문자를 메모리 [55]버퍼에 넣습니다.
  • 메모리 버퍼의 메모리 주소를 미리 지정된 장치 [67]레지스터로 설정합니다.
  • 버퍼 크기(정수)를 미리 지정된 [67]다른 레지스터로 설정합니다.
  • 기계 명령을 실행하여 쓰기를 시작합니다.
  • 준비 대기열에서 다음 프로세스로 컨텍스트 전환을 수행합니다.

쓰기가 수행되는 동안 운영 체제는 정상적으로 다른 프로세스로 전환됩니다.장치가 쓰기를 마치면 장치는 인터럽트 요청주장하여 현재 실행 중인 프로세스를 중단합니다.또한 장치는 데이터 [68]버스에 정수를 배치합니다.인터럽트 요청을 수락하면 운영 체제는 다음과 같이 합니다.

  • 프로그램 카운터(레지스터)의 내용과 이어서 상태 레지스터를 콜 [47]스택에 밀어 넣습니다.
  • 다른 레지스터의 내용을 콜스택에 밀어 넣습니다. (또는 레지스터의 내용을 시스템 테이블에 배치할 수도 있습니다.)[68]
  • 데이터 버스에서 정수를 읽습니다.정수는 인터럽트 벡터 테이블에 대한 오프셋입니다.그러면 벡터 테이블의 명령은 다음과 같습니다.
  • 장치 상태 테이블에 액세스합니다.
  • 공정 제어 블록을 추출합니다.
  • 쓰기 프로세스로 돌아가는 상황 전환을 수행합니다.

쓰기 프로세스의 타임슬라이스가 만료되면 운영 체제는 다음과 같이 [69]동작합니다.

  • 상태 레지스터 및 프로그램 카운터를 제외한 레지스터를 콜 스택에서 팝합니다.
  • 콜 스택에서 상태 레지스터를 팝니다.
  • 콜 스택에서 다음 명령의 주소를 팝업한 후 프로그램 카운터에 다시 설정합니다.

이제 프로그램 카운터가 재설정되면 중단된 프로세스가 [47]타임슬라이스를 재개합니다.

모드

보호 모드에서 사용할 수 있는 x86 마이크로프로세서 아키텍처의 권한 링.운영 체제는 각 모드에서 실행되는 프로세스를 결정합니다.

현대의 컴퓨터는 여러 가지 작동 방식을 지원합니다.이 기능을 갖춘 CPU는 사용자 모드와 슈퍼바이저 모드의 두 가지 모드를 제공합니다.일반적으로 슈퍼바이저 모드 동작은 모든 MPU 명령을 포함한 모든 머신 리소스에 제한 없이 액세스할 수 있습니다.사용자 모드 작업은 명령어 사용에 대한 제한을 설정하고 일반적으로 시스템 리소스에 대한 직접 액세스를 허용하지 않습니다.CPU에는 사용자 모드와 유사한 다른 모드(예: 32비트 프로세서의 16비트 프로세서 또는 64비트 프로세서의 32비트 프로세서)가 있을 수 있습니다.

전원을 켜거나 재설정하면 시스템이 슈퍼바이저 모드로 시작됩니다.운영 체제 커널이 로드되고 시작되면 사용자 모드와 슈퍼바이저 모드(커널 모드라고도 함)의 경계를 설정할 수 있습니다.

슈퍼바이저 모드는 메모리 액세스 방법 제어, 디스크 드라이브 및 비디오 디스플레이 장치와 같은 장치와의 통신 등 하드웨어에 대한 제한 없는 액세스가 필요한 낮은 수준의 작업에 커널이 사용합니다.반대로 사용자 모드는 다른 거의 모든 것에 사용됩니다.워드 프로세서나 데이터베이스 관리자와 같은 응용 프로그램은 사용자 모드 내에서 작동하며, 커널에 제어권을 넘겨야만 머신 리소스에 액세스할 수 있으며, 이 과정은 슈퍼바이저 모드로 전환하게 합니다.일반적으로, 커널로의 제어 전달은 모토로라 68000과 같은 소프트웨어 인터럽트 명령을 실행함으로써 달성됩니다.TRAP설명.소프트웨어 인터럽트로 인해 프로세서는 사용자 모드에서 슈퍼바이저 모드로 전환하고 커널이 제어할 수 있는 코드를 실행하기 시작합니다.

사용자 모드에서 프로그램은 일반적으로 제한된 프로세서 명령 집합에 액세스할 수 있으며 일반적으로 시스템 작동에 지장을 초래할 수 있는 명령을 실행할 수 없습니다.슈퍼바이저 모드에서는 일반적으로 명령 실행 제한이 제거되어 커널이 모든 머신 리소스에 제한 없이 액세스할 수 있습니다.

"사용자 모드 리소스"라는 용어는 일반적으로 실행 중인 프로그램을 변경할 수 없다는 정보를 포함하는 하나 이상의 CPU 레지스터를 말합니다.이러한 리소스를 변경하려는 시도는 일반적으로 프로그램을 강제로 종료("킬링")함으로써 운영 체제가 프로그램이 시도하고 있던 불법적인 작업을 처리할 수 있는 슈퍼바이저 모드로 전환하게 합니다.

메모리관리

무엇보다도, 멀티프로그래밍 운영체제 커널은 현재 프로그램들이 사용하고 있는 모든 시스템 메모리를 관리할 책임이 있어야 합니다.이를 통해 프로그램이 다른 프로그램에서 이미 사용 중인 메모리를 방해하지 않습니다.프로그램 시간이 공유되므로 각 프로그램은 메모리에 독립적으로 액세스할 수 있어야 합니다.

많은 초기 운영 체제에서 사용되는 협력적 메모리 관리는 모든 프로그램이 커널의 메모리 관리자를 자발적으로 사용한다고 가정하며 할당된 메모리를 초과하지 않습니다.이러한 메모리 관리 시스템은 프로그램이 종종 버그를 포함하여 할당된 메모리를 초과할 수 있기 때문에 거의 더 이상 볼 수 없습니다.프로그램에 장애가 발생하면 다른 프로그램에서 사용하는 메모리에 영향을 미치거나 덮어쓸 수 있습니다.악의적인 프로그램이나 바이러스는 다른 프로그램의 메모리를 의도적으로 변경하거나 운영 체제 자체의 작동에 영향을 줄 수 있습니다.협력적인 메모리 관리를 통해 시스템을 다운시키는 데 한 가지 잘못된 프로그램만 필요합니다.

메모리 보호 기능을 통해 커널은 컴퓨터의 메모리에 대한 프로세스의 접근을 제한할 수 있습니다.메모리 분할 페이징을 포함한 다양한 메모리 보호 방법이 존재합니다.모든 방법에는 어느 정도 수준의 하드웨어 지원(: 80286 MMU)이 필요하며, 이는 모든 컴퓨터에 존재하지는 않습니다.

세그먼트화와 페이징 모두에서 특정 보호 모드 레지스터는 실행 중인 프로그램에 액세스할 수 있는 메모리 주소를 CPU에 지정합니다.다른 주소에 액세스하려고 하면 인터럽트가 발생하여 CPU가 슈퍼바이저 모드로 재진입하여 커널을 담당하게 됩니다.이것은 세그먼트 위반(segmentation violation) 또는 줄여서 Seg-V라고 불리며, 둘 다 의미 있는 결과를 그러한 연산에 할당하기 어렵고, 보통 잘못된 프로그램의 징후이기 때문에 커널은 일반적으로 위반 프로그램을 종료하는 것에 의존하고 오류를 보고합니다.

윈도우 버전 3.1부터 ME까지는 어느 정도의 메모리 보호 기능이 있었지만 프로그램은 이를 사용할 필요를 쉽게 피할 수 있었습니다.일반적인 보호 장애가 생성되어 분할 위반이 발생했음을 나타내지만, 시스템이 충돌하는 경우가 많습니다.

가상 메모리

많은 운영 체제는 하드 디스크와 RAM 주위에 흩어져 있는 메모리를 가상 메모리라고 하는 연속적인 메모리 덩어리처럼 사용하여 프로그램을 "속일" 수 있습니다.

가상 메모리 주소 지정(예: 페이징 또는 세그먼트화)을 사용한다는 것은 커널이 각 프로그램이 특정 시간에 사용할 수 있는 메모리를 선택할 수 있음을 의미하므로 운영 체제는 여러 작업에 동일한 메모리 위치를 사용할 수 있습니다.

프로그램이 현재 액세스 가능한 메모리 범위에 있지 않은 메모리에 액세스하려고 하지만 할당된 메모리를 초과할 경우 커널은 할당된 메모리를 초과할 경우와 동일한 방식으로 중단됩니다(메모리 관리 섹션 참조).UNIX에서는 이러한 종류의 인터럽트를 페이지 폴트(page fault)라고 부릅니다.

커널은 페이지 장애를 감지하면 일반적으로 이를 트리거한 프로그램의 가상 메모리 범위를 조정하여 요청된 메모리에 대한 액세스를 허용합니다.이를 통해 특정 응용프로그램의 메모리가 저장된 위치 또는 실제 할당되었는지 여부에 대한 커널 재량적 권한이 부여됩니다.

현대의 운영 체제에서는 접근 빈도가 낮은 메모리를 디스크나 다른 미디어에 일시적으로 저장하여 해당 공간을 다른 프로그램에서 사용할 수 있도록 할 수 있습니다.메모리 영역을 여러 프로그램에서 사용할 수 있고 해당 메모리 영역에 포함된 내용을 필요에 따라 스왑하거나 교환할 수 있기 때문에 스왑이라고 합니다.

"가상 메모리"는 프로그래머나 사용자에게 컴퓨터에 [70]실제보다 훨씬 더 많은 양의 RAM이 있다는 인식을 제공합니다.

멀티태스킹

멀티태스킹은 같은 컴퓨터에서 여러 개의 독립적인 컴퓨터 프로그램을 실행하여 작업을 동시에 수행하는 것처럼 보이는 것을 말합니다.대부분의 컴퓨터는 한 번에 최대 한 가지 또는 두 가지 일을 수행할 수 있기 때문에 일반적으로 시간 공유를 통해 수행되는데, 이는 각 프로그램이 컴퓨터 실행 시간의 일부를 사용한다는 것을 의미합니다.

운영 체제 커널은 각 프로세스가 실행하는 데 걸리는 시간과 실행 제어를 프로그램에 전달하는 순서를 결정하는 스케줄링 프로그램을 포함합니다.제어는 커널에 의해 프로세스로 전달되며, 이것은 프로그램이 CPU와 메모리에 접근할 수 있게 해줍니다.나중에 컨트롤은 어떤 메커니즘을 통해 커널로 반환되므로 다른 프로그램이 CPU를 사용하도록 허용될 수 있습니다.커널과 애플리케이션 사이의 제어권의 소위 전달을 콘텍스트 스위치라고 합니다.switch)라고 합니다.

프로그램에 시간을 할당하는 것을 통제하는 초기 모델은 협력 멀티태스킹이라고 불렸습니다.이 모델에서 커널에 의해 제어가 프로그램에 전달되면 커널에 명시적으로 제어를 반환하기 전에 원하는 시간 동안 실행될 수 있습니다.이는 악의적이거나 오작동한 프로그램이 CPU를 사용하지 못하게 할 뿐만 아니라 무한 루프에 들어가면 전체 시스템이 중단될 수 있음을 의미합니다.

현대의 운영 체제는 애플리케이션 선점의 개념을 디바이스 드라이버와 커널 코드로 확장하여 운영 체제가 내부 실행 시간도 선제적으로 제어할 수 있도록 합니다.

선제적 멀티태스킹을 관리하는 철학은 모든 프로그램이 CPU에 정기적인 시간이 주어지도록 하는 것입니다.이는 모든 프로그램이 중단되지 않고 CPU에 사용할 수 있는 시간을 제한해야 함을 의미합니다.이를 위해 현대의 운영 체제 커널은 타임드 인터럽트를 사용합니다.보호 모드 타이머는 커널에 의해 설정되며, 커널은 지정된 시간이 경과한 후 슈퍼바이저 모드로 복귀하도록 트리거합니다.(Interrupts 및 Dual Mode Operation에 대한 위의 절 참조).

많은 단일 사용자 운영 체제에서는 가정용 컴퓨터가 일반적으로 테스트가 잘 된 프로그램을 소수만 실행하기 때문에 협력 멀티태스킹이 완벽하게 적합합니다.아미가OS는 첫 번째 버전부터 선제적인 멀티태스킹이 가능한 예외입니다.윈도우 NT는 선제적 멀티태스킹을 시행한 마이크로소프트 윈도우의 첫 번째 버전이었지만 윈도우 XP가 되어서야 가정용 사용자 시장에 출시되었습니다(윈도우 NT가 전문가를 대상으로 했기 때문입니다).

디스크 액세스 및 파일 시스템

파일 시스템을 사용하면 사용자와 프로그램이 종종 디렉토리(또는 "폴더")를 사용하여 컴퓨터의 파일을 구성하고 정렬할 수 있습니다.

디스크에 저장된 데이터에 대한 액세스는 모든 운영 체제의 핵심 기능입니다.컴퓨터는 파일을 사용하여 디스크에 데이터를 저장합니다. 파일은 특정한 방식으로 구성되어 액세스 속도를 높이고 신뢰성을 높이며 드라이브의 사용 가능한 공간을 더 잘 활용할 수 있습니다.디스크에 파일을 저장하는 특정한 방식을 파일 시스템이라고 하며, 파일에 이름과 속성을 지정할 수 있습니다.또한 디렉토리 트리에 배열된 디렉토리 또는 폴더의 계층에 저장할 수 있습니다.

초기 운영 체제는 일반적으로 단일 유형의 디스크 드라이브와 한 종류의 파일 시스템만 지원했습니다.초기 파일 시스템은 용량, 속도, 파일 이름 및 디렉토리 구조의 종류가 제한되어 있었습니다.이러한 제한 사항은 운영 체제의 제한 사항을 반영하는 경우가 많아 운영 체제에서 둘 이상의 파일 시스템을 지원하기가 매우 어려웠습니다.

많은 단순한 운영 체제가 스토리지 시스템에 액세스하기 위한 제한된 옵션을 지원하지만 유닉스 및 리눅스같은 운영 체제는 가상 파일 시스템 또는 VFS라는 기술을 지원합니다.UNIX와 같은 운영 체제는 설계나 파일 시스템에 관계없이 광범위한 스토리지 장치를 지원하므로 공통 API(Application Programming Interface)를 통해 액세스할 수 있습니다.따라서 프로그램이 액세스하는 장치에 대한 지식을 가질 필요가 없습니다.VFS는 운영 체제가 특정 장치 드라이버 및 파일 시스템 드라이버를 사용하여 무한히 다양한 파일 시스템이 설치된 장치에 무제한으로 액세스할 수 있도록 프로그램을 제공합니다.

하드 드라이브와 같은 연결된 저장 장치는 장치 드라이버를 통해 액세스됩니다.장치 드라이버는 드라이브의 특정 언어를 이해하고 운영 체제가 모든 디스크 드라이브에 액세스하는 데 사용하는 표준 언어로 이 언어를 번역할 수 있습니다.UNIX에서 이것은 블록 디바이스의 언어입니다.

커널에 적절한 장치 드라이버가 있으면 하나 이상의 파일 시스템을 포함할 수 있는 원시 형식으로 디스크 드라이브의 컨텐츠에 액세스할 수 있습니다.파일 시스템 드라이버는 각 특정 파일 시스템에 액세스하는 데 사용되는 명령을 운영 체제가 모든 파일 시스템과 대화하는 데 사용할 수 있는 표준 명령 집합으로 변환하는 데 사용됩니다.그런 다음 프로그램은 계층 구조 내에 포함된 파일 이름 및 디렉토리/폴더를 기준으로 이러한 파일 시스템을 처리할 수 있습니다.파일을 만들고 삭제하고 열고 닫을 수 있으며 액세스 권한, 크기, 여유 공간, 생성 및 수정 날짜 등 파일에 대한 다양한 정보를 수집할 수 있습니다.

파일 시스템 간의 다양한 차이점으로 인해 모든 파일 시스템을 지원하기가 어렵습니다.파일 이름에 허용된 문자, 대소문자 구분 및 다양한 종류의 파일 속성이 있으면 모든 파일 시스템에 단일 인터페이스를 구현하기가 어렵습니다.운영 체제는 Windows 및 ReiserFSNTFS, Reiser4, ext3, ext4 및 Linux의 Btrfs와 같이 자신을 위해 특별히 설계된 파일 시스템을 사용할 것을 권장하는 경향이 있습니다.그러나 실제로 대부분의 범용 운영 체제에서 가장 널리 사용되는 파일 시스템을 지원하기 위해 타사 드라이버를 사용할 수 있습니다(예: NTFS는 NTFS-3g, ext2/3 및 Reiser를 통해 Linux에서 사용 가능).FS는 타사 소프트웨어를 통해 Windows에서 사용할 수 있습니다.

파일 시스템에 대한 지원은 현대 운영 체제 중에서도 매우 다양하지만, 거의 모든 운영 체제에 지원 및 드라이버가 포함된 몇 가지 일반적인 파일 시스템이 있습니다.운영 체제는 파일 시스템 지원 및 설치할 수 있는 디스크 형식에 따라 다릅니다.Windows(윈도우)에서 각 파일 시스템은 일반적으로 특정 미디어에만 적용됩니다. 예를 들어 CD는 ISO 9660 또는 UDF를 사용해야 하며 Windows Vista(윈도우 비스타)에서는 NTFS가 운영 체제를 설치할 수 있는 유일한 파일 시스템입니다.여러 종류의 파일 시스템에 리눅스를 설치할 수 있습니다.다른 운영 체제와 달리 Linux 및 UNIX는 저장된 미디어, 하드 드라이브, 디스크(CD, DVD...), USB 플래시 드라이브 또는 다른 파일 시스템에 있는 파일 내에 포함된 파일 시스템에 관계없이 모든 파일 시스템을 사용할 수 있습니다.

장치 드라이버

장치 드라이버는 하드웨어 장치와 상호 작용할 수 있도록 개발된 특정 유형의 컴퓨터 소프트웨어입니다.일반적으로 이 인터페이스는 하드웨어가 연결된 특정 컴퓨터 버스 또는 통신 서브시스템을 통해 장치와 통신하기 위한 인터페이스를 구성하며, 장치에 명령을 제공하거나 장치로부터 데이터를 수신하며, 다른 한편으로는 운영 체제 및 소프트웨어 애플리케이션에 필요한 인터페이스를 제공합니다.운영체제 커널 아래에서 실행되는 다른 프로그램, 전형적으로 운영체제 또는 응용 소프트웨어 패키지 또는 컴퓨터 프로그램이 하드웨어 장치와 투명하게 상호작용할 수 있도록 하는 운영체제에 특화된 하드웨어 의존형 컴퓨터 프로그램입니다.그리고 일반적으로 필요한 비동기식 하드웨어 인터페이스 요구에 필요한 인터럽트 처리를 제공합니다.

장치 드라이버의 핵심 설계 목표는 추상화입니다.하드웨어의 모든 모델(같은 종류의 기기 내에서도)은 다릅니다.보다 신뢰성이 높거나 더 나은 성능을 제공하는 최신 모델도 제조업체에 의해 출시되며, 이러한 최신 모델은 종종 다르게 제어됩니다.컴퓨터와 운영 체제는 현재는 물론 미래에도 모든 장치를 제어하는 방법을 알 것으로 기대할 수 없습니다.이 문제를 해결하기 위해 운영 체제는 기본적으로 모든 유형의 장치를 제어하는 방법을 지시합니다.그러면 장치 드라이버의 기능은 이러한 운영 체제의 필수 기능 호출을 장치별 호출로 변환하는 것입니다.이론적으로 새로운 방식으로 제어되는 새 장치는 적합한 드라이버를 사용할 수 있는 경우 올바르게 작동해야 합니다.이 새로운 드라이버는 운영 체제의 관점에서 디바이스가 정상적으로 작동하는 것처럼 보이게 합니다.

비스타 이전의 윈도우 버전과 2.6 이전의 리눅스 버전에서는 모든 드라이버 실행이 협력적으로 이루어졌는데, 이는 드라이버가 무한 루프에 들어가면 시스템이 정지된다는 것을 의미합니다.이러한 운영 체제의 최근 개정판에는 커널 선점 기능이 포함되어 있는데, 커널은 드라이버에 작업을 제공하기 위해 드라이버를 중단시킨 다음 디바이스 드라이버로부터 응답을 받을 때까지 프로세스에서 스스로를 분리하거나 더 많은 작업을 제공합니다.

네트워킹

현재 대부분의 운영 체제는 다양한 네트워킹 프로토콜, 하드웨어 및 애플리케이션을 지원합니다.즉, 서로 다른 운영 체제를 실행하는 컴퓨터가 유선 또는 무선 연결을 사용하여 컴퓨팅, 파일, 프린터 및 스캐너와 같은 리소스를 공유하는 공통 네트워크에 참여할 수 있습니다.네트워크는 기본적으로 컴퓨터의 운영 체제가 원격 컴퓨터의 리소스에 액세스하여 해당 리소스가 로컬 컴퓨터에 직접 연결된 경우와 동일한 기능을 지원하도록 허용합니다.여기에는 단순한 통신에서부터 네트워크 파일 시스템을 사용하거나 다른 컴퓨터의 그래픽이나 사운드 하드웨어를 공유하는 것까지 모든 것이 포함됩니다.네트워크에 연결된 사용자가 컴퓨터의 명령줄 인터페이스에 직접 액세스할 수 있는 SSH와 같이 일부 네트워크 서비스에서는 컴퓨터의 리소스에 투명하게 액세스할 수 있습니다.

클라이언트/서버 네트워킹을 통해 클라이언트라는 컴퓨터의 프로그램이 네트워크를 통해 서버라는 다른 컴퓨터에 연결할 수 있습니다.서버는 다른 네트워크 컴퓨터와 사용자에게 다양한 서비스를 제공(또는 호스트)합니다.이러한 서비스는 대개 서버의 IP 주소 이상의 포트나 번호가 매겨진 액세스 포인트를 통해 제공됩니다.각 포트 번호는 일반적으로 실행 중인 프로그램 중 최대 하나와 연결되며, 이 프로그램은 해당 포트에 대한 요청 처리를 담당합니다.사용자 프로그램인 데몬은 요청을 운영 체제 커널에 전달함으로써 해당 컴퓨터의 로컬 하드웨어 리소스에 액세스할 수 있습니다.

많은 운영 체제는 IBM 시스템의 SNA, Digital Equipment Corporation의 시스템의 DECnet, Windows의 Microsoft(SMB)같은 하나 이상의 공급업체별 또는 개방형 네트워킹 프로토콜을 지원합니다.파일 액세스를 위해 NFS와 같은 특정 작업에 대한 특정 프로토콜도 지원될 수 있습니다.Esound나 esd와 같은 프로토콜은 원격 시스템의 사운드 하드웨어에서 로컬 애플리케이션의 사운드를 제공하기 위해 네트워크를 통해 쉽게 확장할 수 있습니다.

보안.

안전한 컴퓨터는 여러 가지 기술이 제대로 작동하는지에 따라 달라집니다.최신 운영 체제는 시스템에서 실행되는 소프트웨어와 [71]커널을 통해 네트워크와 같은 외부 장치에 사용할 수 있는 다양한 리소스에 대한 액세스를 제공합니다.

운영 체제는 처리를 허용해야 하는 요청과 처리하지 말아야 하는 요청을 구별할 수 있어야 합니다.일부 시스템은 단순히 "특권"과 "특권"을 구분할 수 있지만, 시스템은 일반적으로 사용자 이름과 같은 요청자 ID의 형태를 갖습니다.신원을 확인하기 위해서는 인증 과정이 있을 수 있습니다.종종 사용자 이름을 따옴표로 붙여야 하며, 각 사용자 이름에는 암호가 있을 수 있습니다.대신 마그네틱 카드나 생체 인식 데이터와 같은 다른 인증 방법이 사용될 수 있습니다.경우에 따라서는, 특히 네트워크에서 연결하는 경우, 네트워크 공유를 통해 파일을 읽는 등의 인증 없이 리소스에 액세스할 수도 있습니다.또한 요청자 ID의 개념에서는 권한 부여도 포함됩니다. 시스템에 로그인하면 요청자가 액세스할 수 있는 특정 서비스 및 리소스는 요청자의 사용자 계정 또는 요청자가 [citation needed]속한 다양하게 구성된 사용자 그룹에 연결됩니다.

보안 허용 또는 불허 모델 외에도 보안 수준이 높은 시스템은 감사 옵션도 제공합니다.이렇게 하면 리소스에 대한 액세스 요청(예: "누가 이 파일을 읽었습니까?")을 추적할 수 있습니다.내부 보안 또는 이미 실행 중인 프로그램의 보안은 운영 체제 커널에 대한 인터럽트를 통해 모든 유해한 요청을 수행해야 하는 경우에만 가능합니다.프로그램이 하드웨어 및 리소스에 직접 액세스할 수 있다면 보안을 [citation needed]유지할 수 없습니다.

외부 보안은 연결된 콘솔에서의 로그인이나 일종의 네트워크 연결과 같은 컴퓨터 외부의 요청을 포함합니다.외부 요청은 종종 장치 드라이버를 통해 운영 체제의 커널로 전달되며, 여기서 응용 프로그램으로 전달되거나 직접 수행될 수 있습니다.운영 체제의 보안은 상업적 성격과 군사적 성격 모두에서 컴퓨터에 저장된 매우 민감한 데이터 때문에 오랫동안 우려되어 왔습니다.미국 정부 국방부(DoD)는 보안의 효율성을 평가하기 위한 기본 요구사항을 설정하는 표준인 TCSEC(Trusted Computer System Evaluation Criteria)를 만들었습니다.TCSEC이 중요한 정보 또는 기밀 정보의 처리, 저장 및 검색을 위해 고려되고 있는 신뢰할 수 있는 운영 체제를 평가, 분류 및 선택하는 데 사용되었기 때문에 운영 체제 제조업체들에게는 이 문제가 매우 중요하게 되었습니다.

네트워크 서비스에는 파일 공유, 인쇄 서비스, 이메일, 웹 사이트 및 파일 전송 프로토콜(FTP)과 같은 제품이 포함되며, 대부분 보안이 손상될 수 있습니다.보안의 최전선에는 방화벽 또는 침입 탐지/방지 시스템으로 알려진 하드웨어 장치가 있습니다.운영 체제 수준에서는 침입 탐지/방지 시스템뿐만 아니라 여러 가지 소프트웨어 방화벽을 사용할 수 있습니다.대부분의 최신 운영 체제는 기본적으로 활성화되어 있는 소프트웨어 방화벽을 포함하고 있습니다.소프트웨어 방화벽은 운영 체제에서 실행 중인 서비스나 응용 프로그램과의 네트워크 트래픽을 허용하거나 거부하도록 구성할 수 있습니다.따라서 Telnet이나 FTP와 같은 안전하지 않은 서비스를 설치하고 실행할 수 있으며, 방화벽이 해당 포트의 서비스에 연결하려는 모든 트래픽을 거부하므로 보안 침해의 위협을 받지 않아도 됩니다.

PopekGoldberg 가상화 요구 사항을 충족하지 않는 시스템에서 사용할 수 있는 유일한 샌드박스 전략인 대안 전략은 운영 체제가 사용자 프로그램을 네이티브 코드로 실행하지 않고 대신 프로세서를 에뮬레이트하거나 Java와 같은 p-code 기반 시스템에 호스트를 제공하는 것입니다.

내부 보안은 특히 다중 사용자 시스템과 관련이 있습니다. 이를 통해 시스템의 각 사용자는 다른 사용자가 조작하거나 읽을 수 없는 개인 파일을 가질 수 있습니다.감사를 우회하는 것을 포함하여 프로그램이 잠재적으로 운영 체제를 우회할 수 있기 때문에 감사가 유용하려면 내부 보안도 중요합니다.

사용자 인터페이스

bash 명령행의 스크린샷입니다.각 명령은 '프롬프트' 다음에 입력되고, 그 출력은 아래에 나타나 화면 아래로 이동합니다.현재 명령 프롬프트는 하단에 있습니다.

개인이 조작해야 할 모든 컴퓨터는 사용자 인터페이스를 필요로 합니다.사용자 인터페이스는 일반적으로 셸(shell)이라고 하며, 사용자 상호 작용을 지원하려면 필수적입니다.사용자 인터페이스는 디렉토리 구조를 보고 키보드, 마우스 또는 신용카드 리더와 같은 입력 하드웨어 장치로부터 데이터를 획득할 운영 체제에 서비스를 요청하며, 비디오 모니터 또는 프린터와 같은 출력 하드웨어 장치에 프롬프트, 상태 메시지 등을 표시하도록 운영 체제 서비스를 요청합니다.역사적으로 가장 일반적인 두 가지 형태의 사용자 인터페이스는 컴퓨터 명령을 한 줄로 입력하는 명령줄 인터페이스와 시각적 환경(가장 일반적으로 WIMP)이 있는 그래픽 사용자 인터페이스입니다.

그래픽 사용자 인터페이스

KDE Plasma 5 그래픽 사용자 인터페이스 스크린샷프로그램은 화면의 이미지 형태를, 파일, 폴더(디렉토리), 응용프로그램은 아이콘과 기호 형태를 취합니다.마우스는 컴퓨터를 탐색하는 데 사용됩니다.

대부분의 현대 컴퓨터 시스템은 그래픽 사용자 인터페이스(GUI)를 지원하며 종종 이를 포함합니다.클래식 맥 OS의 원래 구현과 같은 일부 컴퓨터 시스템에서는 GUI가 커널에 통합됩니다.

그래픽 사용자 인터페이스는 엄밀히 말하면 운영 체제 서비스는 아니지만, 하나에 대한 지원을 운영 체제 커널에 통합하면 GUI가 출력 기능을 수행하는 데 필요한 컨텍스트 스위치의 를 줄임으로써 GUI의 응답성을 높일 수 있습니다.다른 운영 체제들은 모듈식이며, 커널과 운영 체제로부터 그래픽 서브시스템을 분리합니다.1980년대 UNIX, VMS 등은 이러한 방식으로 구축된 운영 체제를 가지고 있었습니다.리눅스와 macOS도 이런 방식으로 구축됩니다.윈도우 비스타와 같은 마이크로소프트 윈도우의 최신 릴리스는 대부분 사용자 공간에 있는 그래픽 서브시스템을 구현하지만 윈도우 NT 4.0윈도우 서버 2003 사이 버전의 그래픽 그리기 루틴은 대부분 커널 공간에 존재합니다.윈도우 9x는 인터페이스와 커널의 구분이 거의 없었습니다.

많은 컴퓨터 운영 체제에서는 사용자가 원하는 사용자 인터페이스를 설치하거나 만들 수 있습니다.GNOME 또는 KDE Plasma 5와 함께 사용되는 X Window 시스템은 대부분의 Unix 및 Unix와 유사한 시스템(BSD, Linux, Solaris)에서 흔히 볼 수 있는 설정입니다.마이크로소프트 윈도우즈용으로 여러 개의 윈도우즈 셸 대체 제품이 출시되었으며, 이는 포함된 윈도우즈 셸을 대체할 수 있지만 셸 자체는 윈도우즈에서 분리할 수 없습니다.

수많은 유닉스 기반 GUI가 시간이 지나면서 존재해 왔는데, 대부분 X11에서 파생된 것들입니다.유닉스의 다양한 공급업체(HP, IBM, Sun) 간의 경쟁으로 인해 많은 조각화가 이루어졌지만, 1990년대에 COSECDE로 표준화하려는 노력은 여러 가지 이유로 실패했고, 결국 GNOME 및 K Desktop Environment의 광범위한 채택으로 인해 가려졌습니다.자유 소프트웨어 기반 툴킷과 데스크톱 환경 이전에 모티프는 널리 퍼져 있던 툴킷/데스크톱 조합(CDE가 개발된 기반)이었습니다.

그래픽 사용자 인터페이스는 시간이 지남에 따라 진화합니다.예를 들어, 윈도우는 새로운 주요 버전의 윈도우가 출시될 때마다 사용자 인터페이스를 거의 수정해왔고,[72] 1999년 맥 OS X의 도입으로 맥 OS GUI는 극적으로 변화했습니다.

실시간 운영체제

RTOS(Real-time operating system)는 고정된 데드라인(실시간 컴퓨팅)을 가진 애플리케이션을 위한 운영 체제입니다.이러한 응용 프로그램에는 일부 소형 임베디드 시스템, 자동차 엔진 제어기, 산업용 로봇, 우주선, 산업용 제어 장치 및 일부 대규모 컴퓨팅 시스템이 포함됩니다.

대규모 실시간 운영체제의 초기 예로는 아메리칸 항공과 IBMSabre Airline Reservations System을 위해 개발한 Transaction Processing Facility가 있습니다.

마감일이 정해진 임베디드 시스템은 VxWorks, PikeOS, eCos, QNX, MontaVista Linux 및 RT Linux와 같은 실시간 운영 체제를 사용합니다.Windows CE는 데스크톱 Windows와 유사한 API를 공유하지만 데스크톱 Windows의 [73]코드베이스는 공유하지 않는 실시간 운영 체제입니다.심비안 OS에는 버전 8.0b부터 RTOS 커널(EKA2)도 있습니다.

일부 임베디드 시스템은 Palm OS, BSD, Linux 의 운영 체제를 사용하지만 이러한 운영 체제는 실시간 컴퓨팅을 지원하지 않습니다.

취미로 운영체제 개발

취미 운영 체제는 코드가 기존 운영 체제에서 직접 파생되지 않고 사용자와 개발자가 거의 없는 [citation needed]운영 체제로 분류될 수 있습니다.

취미 개발은 예를 들어 6502 마이크로프로세서로 구동되는 간단한 싱글보드 컴퓨터와 같은 "홈브루" 컴퓨팅 장치를 지원하는 경우도 있습니다.또는 이미 널리 사용되고 있는 아키텍처에 대한 개발일 수도 있습니다.운영 체제 개발은 완전히 새로운 개념에서 비롯될 수도 있고, 기존 운영 체제를 모델링함으로써 시작될 수도 있습니다.어느 경우든, 취미 생활을 하는 사람은 자신의 개발자이거나, 관심사가 비슷한 사람들 중 작고 때로는 구조화되지 않은 사람들과 교류할 수 있습니다.

취미용 운영체제의 예로는 음절과 템플OS있습니다.

운영체제의 다양성과 휴대성

응용 프로그램이 특정 운영 체제에서 사용하기 위해 작성되고 다른 OS로 포팅되는 경우, 응용 프로그램에서 필요한 기능은 응용 프로그램을 적응, 변경 또는 유지 관리해야 하는 해당 OS(함수의 이름, 인수의 의미 등)에 따라 다르게 구현될 수 있습니다.

운영 체제 다양성을 지원하는 데 드는 이러한 비용은 대신 Java 또는 Qt같은 소프트웨어 플랫폼을 기반으로 애플리케이션을 작성함으로써 방지할 수 있습니다.이러한 추상화는 이미 특정 운영 체제 및 해당 시스템 라이브러리에 대한 적응 비용을 부담했습니다.

또 다른 접근 방식은 운영 체제 공급업체가 표준을 채택하는 것입니다.예를 들어, POSIXOS 추상화 계층은 포팅 비용을 줄이는 공통점을 제공합니다.

점유율

참고 항목

메모들

  1. ^ DOS/360과 에뮬레이션 소프트웨어의 조합은 COS(Compatibility Operating System)로 알려져 있습니다.
  2. ^ 그러나 ESPOL은 소스 프로그램이 명령어 레퍼토리의 모든 동작을 명시하도록 허용했습니다.
  3. ^ 벨 연구소는 GE와 MIT를 떠나면서 빠르게 철수했습니다.
  4. ^ 최신 CPU는 인터럽트 없이 선택된 커널 서비스를 호출하는 명령어(예: SYSTENTER)를 제공합니다.더 많은 정보를 원하시면 https://wiki.osdev.org/SYSENTER 를 방문하세요.
  5. ^ SIGINT, SIGSEGV, SIGBUS 등을 예로 들 수 있습니다.
  6. ^ 종종 더 작은 시스템의 경우 DMA 칩의 형태로 그리고 더 큰 시스템의 경우 I/O 채널의 형태로
  7. ^ 현대의 마더보드에는 DMA 컨트롤러가 있습니다.추가적으로, 디바이스는 또한 하나를 가질 수 있습니다.SCSI RDMA 프로토콜을 방문합니다.

참고문헌

  1. ^ Stallings (2005). Operating Systems, Internals and Design Principles. Pearson: Prentice Hall. p. 6.
  2. ^ Dhotre, I.A. (2009). Operating Systems. Technical Publications. p. 1.
  3. ^ a b "Desktop Operating System Market Share Worldwide". StatCounter Global Stats. Archived from the original on 27 January 2020. Retrieved 12 October 2022.
  4. ^ "Mobile & Tablet Operating System Market Share Worldwide". StatCounter Global Stats. Archived from the original on 1 November 2020. Retrieved 12 October 2022.
  5. ^ "Strategy Analytics: Android Captures Record 88 Percent Share of Global Smartphone Shipments in Q3 2016" (Press release). 2 November 2016. Archived from the original on 5 November 2016.
  6. ^ "VII. Special-Purpose Systems - Operating System Concepts, Seventh Edition [Book]". www.oreilly.com. Archived from the original on 13 June 2021. Retrieved 8 February 2021.
  7. ^ "Special-Purpose Operating Systems - RWTH AACHEN UNIVERSITY Institute for Automation of Complex Power Systems - English". www.acs.eonerc.rwth-aachen.de. Archived from the original on 14 June 2021. Retrieved 8 February 2021.
  8. ^ Lorch, Jacob R.; Smith, Alan Jay (1996). "Reducing processor power consumption by improving processor time management in a single-user operating system". Proceedings of the 2nd annual international conference on Mobile computing and networking. New York, NY, US: ACM. pp. 143–154. doi:10.1145/236387.236437. ISBN 089791872X.
  9. ^ Mishra, B.; Singh, N.; Singh, R. (2014). "Master-slave group based model for co-ordinator selection, an improvement of bully algorithm". International Conference on Parallel, Distributed and Grid Computing (PDGC). pp. 457–460. doi:10.1109/PDGC.2014.7030789. ISBN 978-1-4799-7682-9. S2CID 13887160.
  10. ^ a b Hansen, Per Brinch, ed. (2001). Classic Operating Systems. Springer. pp. 4–7. ISBN 0-387-95113-X. Archived from the original on 11 January 2023. Retrieved 19 December 2020.
  11. ^ Ryckman, George (1960). "The computer operation language". IRE-AIEE-ACM '60 (Western): 341. doi:10.1145/1460361.1460406. S2CID 30745551.
  12. ^ Lavington, Simon (1998). A History of Manchester Computers (2nd ed.). Swindon: The British Computer Society. pp. 50–52. ISBN 978-1-902505-01-5.
  13. ^ Kilburn, T.; Payne, R. B.; Howarth, D. J. (December 1961). "The Atlas Supervisor". Institute of Electrical Engineers: 279–294. doi:10.1145/1460764.1460786. S2CID 16466990. Archived from the original on 9 June 2022. Retrieved 17 June 2022.
  14. ^ Brinch Hansen, Per (2000). Classic Operating Systems: From Batch Processing to Distributed Systems. Springer-Verlag.
  15. ^ EXEC I UNIVAC 1107 Executive System (PDF) (rev. 1 ed.). Sperry Rand. UP-2577. Archived (PDF) from the original on 15 June 2022. Retrieved 15 May 2022.
  16. ^ UNIVAC DATA PROCESSING DIVISION MULTI-PROCESSOR SYSTEM EXEC II PROGRAMMERS REFERENCE MANUAL (PDF). Sperry Rand. 1966. UP-4058. Archived (PDF) from the original on 15 June 2022. Retrieved 15 May 2022.
  17. ^ UNIVAC 1108 MULTI-PROCESSOR SYSTEM Operating System EXEC 8 PROGRAMMERS REFERENCE (PDF) (rev. 1 ed.). Sperry Rand. 1968. UP-4144. Archived (PDF) from the original on 25 May 2022. Retrieved 15 May 2022.
  18. ^ "Intel® Microprocessor Quick Reference Guide - Year". www.intel.com. Archived from the original on 25 April 2016. Retrieved 24 April 2016.
  19. ^ Ritchie, Dennis. "Unix Manual, first edition". Lucent Technologies. Archived from the original on 18 May 2008. Retrieved 22 November 2012.
  20. ^ "OS X Mountain Lion – Move your Mac even further ahead". Apple. Archived from the original on 23 May 2011. Retrieved 7 August 2012.
  21. ^ "OPENEDITION SERVICES ON MVS/ESA SP VERSION 4 RELEASE 3 ANNOUNCED AND AVAILABILITY OF MVS/ESA SP VERSION 4 RELEASE 3 WITH ADDITIONAL ENHANCEMENTS". Announcement Letters. IBM. 9 February 1993. 293-060. Retrieved 16 July 2023.
  22. ^ Introducing OpenEdition MVS. First Edition. IBM. December 1993. GC23-3010-00.
  23. ^ OpenEdition MVS POSIX.1 Conformance Document. First Edition. IBM. February 1993. GC23-3011-00.
  24. ^ OpenEdition MVS POSIX.2 Conformance Document. First Edition. IBM. December 1993. GC23-3012-00.
  25. ^ "Twenty Years of Linux according to Linus Torvalds". ZDNet. April 13, 2011. Archived from the original on September 19, 2016. Retrieved September 19, 2016.
  26. ^ Linus Benedict Torvalds (5 October 1991). "Free minix-like kernel sources for 386-AT". Newsgroup: comp.os.minix. Archived from the original on 2 March 2013. Retrieved 30 September 2011.
  27. ^ "What Is Linux: An Overview of the Linux Operating System". Medium. 11 April 2020. Retrieved 16 July 2023.
  28. ^ Linux Online (2008). "Linux Logos and Mascots". Archived from the original on 15 August 2010. Retrieved 11 August 2009.
  29. ^ "IDC report into Server market share". Idc.com. Archived from the original on 27 September 2012. Retrieved 7 August 2012.
  30. ^ LinuxDevices Staff (23 April 2008). "Linux still top embedded OS". LinuxGizmos.com. Archived from the original on 19 April 2016. Retrieved 5 April 2016.
  31. ^ "Operating system Family / Linux TOP500". www.top500.org. Retrieved 30 July 2023.
  32. ^ "Top 5 Operating Systems from January to April 2011". StatCounter. October 2009. Archived from the original on 26 May 2012. Retrieved 5 November 2009.
  33. ^ "Global Web Stats". Net Market Share, Net Applications. May 2011. Archived from the original on 25 January 2010. Retrieved 7 May 2011.
  34. ^ "Global Web Stats". W3Counter, Awio Web Services. September 2009. Archived from the original on 28 June 2012. Retrieved 24 October 2009.
  35. ^ "Operating System Market Share". Net Applications. October 2009. Archived from the original on 25 January 2010. Retrieved 5 November 2009.
  36. ^ "Troubleshooting MS-DOS Compatibility Mode on Hard Disks". Support.microsoft.com. Archived from the original on 10 August 2012. Retrieved 7 August 2012.
  37. ^ "Using NDIS 2 PCMCIA Network Card Drivers in Windows 95". Support.microsoft.com. Archived from the original on 17 February 2013. Retrieved 7 August 2012.
  38. ^ "INFO: Windows 95 Multimedia Wave Device Drivers Must be 16 bit". Support.microsoft.com. Archived from the original on 17 February 2013. Retrieved 7 August 2012.
  39. ^ Arthur, Charles. "Windows 8 will run on ARM chips - but third-party apps will need rewrite". The Guardian. Archived from the original on 12 October 2016.
  40. ^ "Operating System Share by Groups for Sites in All Locations January 2009". Archived from the original on 6 July 2009. Retrieved 3 May 2010.
  41. ^ "Behind the IDC data: Windows still No. 1 in server operating systems". ZDNet. 26 February 2010. Archived from the original on 1 March 2010.
  42. ^ a b Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. A signal is a notification to a process that an event has occurred. Signals are sometimes described as software interrupts.
  43. ^ Hyde, Randall (1996). "Chapter Seventeen: Interrupts, Traps and Exceptions (Part 1)". The Art Of Assembly Language Programming. No Starch Press. Archived from the original on 22 December 2021. Retrieved 22 December 2021. The concept of an interrupt is something that has expanded in scope over the years. The 80x86 family has only added to the confusion surrounding interrupts by introducing the int (software interrupt) instruction. Indeed, different manufacturers have used terms like exceptions, faults, aborts, traps and interrupts to describe the phenomena this chapter discusses. Unfortunately there is no clear consensus as to the exact meaning of these terms. Different authors adopt different terms to their own use.
  44. ^ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 308. ISBN 978-0-13-854662-5. Like the trap, the interrupt stops the running program and transfers control to an interrupt handler, which performs some appropriate action. When finished, the interrupt handler returns control to the interrupted program.
  45. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 32. ISBN 978-0-201-50480-4. When an interrupt (or trap) occurs, the hardware transfers control to the operating system. First, the operating system preserves the state of the CPU by storing registers and the program counter. Then, it determines which type of interrupt has occurred. For each type of interrupt, separate segments of code in the operating system determine what action should be taken.
  46. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 105. ISBN 978-0-201-50480-4. Switching the CPU to another process requires saving the state of the old process and loading the saved state for the new process. This task is known as a context switch.
  47. ^ a b c d e Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 31. ISBN 978-0-201-50480-4.
  48. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 30. ISBN 978-0-201-50480-4. Hardware may trigger an interrupt at any time by sending a signal to the CPU, usually by way of the system bus.
  49. ^ Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. Signals are analogous to hardware interrupts in that they interrupt the normal flow of execution of a program; in most cases, it is not possible to predict exactly when a signal will arrive.
  50. ^ Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3. Among the types of events that cause the kernel to generate a signal for a process are the following: A software event occurred. For example, ... the process's CPU time limit was exceeded[.]
  51. ^ a b c d e Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 388. ISBN 978-1-59327-220-3.
  52. ^ "Intel® 64 and IA-32 Architectures Software Developer's Manual" (PDF). Intel Corporation. September 2016. p. 610. Archived (PDF) from the original on 23 March 2022. Retrieved 5 May 2022.
  53. ^ a b c Bach, Maurice J. (1986). The Design of the UNIX Operating System. Prentice-Hall. p. 200. ISBN 0-13-201799-7.
  54. ^ Kerrisk, Michael (2010). The Linux Programming Interface. No Starch Press. p. 400. ISBN 978-1-59327-220-3.
  55. ^ a b Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 308. ISBN 978-0-13-854662-5.
  56. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 182. ISBN 978-0-201-50480-4.
  57. ^ Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 153. ISBN 0-201-12919-1.
  58. ^ Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 148. ISBN 0-201-12919-1.
  59. ^ a b Haviland, Keith; Salama, Ben (1987). UNIX System Programming. Addison-Wesley Publishing Company. p. 149. ISBN 0-201-12919-1.
  60. ^ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 292. ISBN 978-0-13-854662-5.
  61. ^ IBM (September 1968), "Main Storage" (PDF), IBM System/360 Principles of Operation (PDF), Eighth Edition, p. 7, archived (PDF) from the original on 19 March 2022, retrieved 13 April 2022
  62. ^ a b Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 294. ISBN 978-0-13-854662-5.
  63. ^ "Program Interrupt Controller (PIC)" (PDF). Users Handbook - PDP-7 (PDF). Digital Equipment Corporation. 1965. pp. 48. F-75. Archived (PDF) from the original on 10 May 2022. Retrieved 20 April 2022.
  64. ^ PDP-1 Input-Output Systems Manual (PDF). Digital Equipment Corporation. pp. 19–20. Archived (PDF) from the original on 25 January 2019. Retrieved 16 August 2022.
  65. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 32. ISBN 978-0-201-50480-4.
  66. ^ Silberschatz, Abraham (1994). Operating System Concepts, Fourth Edition. Addison-Wesley. p. 34. ISBN 978-0-201-50480-4.
  67. ^ a b Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 295. ISBN 978-0-13-854662-5.
  68. ^ a b Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 309. ISBN 978-0-13-854662-5.
  69. ^ Tanenbaum, Andrew S. (1990). Structured Computer Organization, Third Edition. Prentice Hall. p. 310. ISBN 978-0-13-854662-5.
  70. ^ Stallings, William (2008). Computer Organization & Architecture. New Delhi: Prentice-Hall of India Private Limited. p. 267. ISBN 978-81-203-2962-1.
  71. ^ "Operating Systems: Security". www.cs.uic.edu. Archived from the original on 7 December 2020. Retrieved 27 November 2020.
  72. ^ Polsson, Ken (8 February 2007). "Chronology of Personal Computer Software (1998-1999)". islandnet.com. Archived from the original on 14 May 2008.
  73. ^ "Reading: Operating System". Lumen. Archived from the original on 6 January 2019. Retrieved 5 January 2019.

추가열람

  • Anderson, Thomas; Dahlin, Michael (2014). Operating Systems: Principles and Practice. Recursive Books. ISBN 978-0-9856735-2-9.
  • Auslander, M. A.; Larkin, D. C.; Scherr, A. L. (September 1981). "The Evolution of the MVS Operating System". IBM Journal of Research and Development. 25 (5): 471–482. doi:10.1147/rd.255.0471.
  • Deitel, Harvey M.; Deitel, Paul; Choffnes, David (25 December 2015). Operating Systems. Pearson/Prentice Hall. ISBN 978-0-13-092641-8.
  • Bic, Lubomur F.; Shaw, Alan C. (2003). Operating Systems. Pearson: Prentice Hall.
  • Silberschatz, Avi; Galvin, Peter; Gagne, Greg (2008). Operating Systems Concepts. John Wiley & Sons. ISBN 978-0-470-12872-5.
  • 오브라이언, J.A., & 마라카스, G.M. (2011).경영정보시스템. 10e맥그로-힐 어윈.
  • Leva, Alberto; Maggio, Martina; Papadopoulos, Alessandro Vittorio; Terraneo, Federico (2013). Control-based Operating System Design. IET. ISBN 978-1-84919-609-3.
  • Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (2015). Operating Systems: Three Easy Pieces. Archived from the original on 25 July 2016. Retrieved 25 July 2016.

외부 링크