운영체제

컴퓨터의 사용을 위해 필수적인 존재로, 하드웨어 자원을 관리하고, API나 시스템 호출을 통해 프로그램을 위한 서비스를 제공하며, 사용자와 하드웨어 사이에 인터페이스로서 동작하는 소프트웨어의 일종이다.
과거에는 이런 고도한 기술보다는 단순히 프로그램을 메모리에 적재시키고, 실행하도록 하는 역할만 제공하였습니다. 하지만 그 이후 입출력 기능이 추가되고, 라이브러리가 발전되면서 현대의 운영체제가 만들어지게 된 것입니다.

폰노이만 아키텍쳐

폰 노이만이 제시한 프로그램 내장방식을 가지는 최초의 컴퓨터 아키텍처입니다.
기존 애니악에서는 배선을 교체하는 것이 큰 비용을 가져왔는데, 이 프로그램 내장방식은 하드웨어 구성은 고정되지만, 프로그램과 데이터는 메모리에서 적재, 실행시키도록 하기 때문에 다른 작업을 위해서 배선을 바꿀 필요가 없습니다. 즉 편의성과 범용성이 크게 향상되었습니다.


이 폰노이만 아키텍처가 만들어지면서 기존의 프로그램을 위한 컴퓨터에서 컴퓨터를 위한 프로그램으로 컴퓨터가 발전하게 되었고, 이후에 컴퓨터의 관리 용이성을 위해 운영체제가 만들어졌습니다.



Batch Operating System(배치 처리 운영체제)

배치 처리 운영체제는 프로그램을 순차적으로 로드해주는 역할만을 수행합니다. 즉, 컴퓨터에 여러 프로그램을 내장시켜 놓지만, 한번에 하나의 프로그램만 로드해주는 역할을 수행합니다.
이 방식은 처리율이 극대화된다는 장점이 있지만, 뒤에 실행될 프로그램의 수행시간이 더 짧은데도 대기해야하는 낮은 응답시간을 가지고, 또한 입출력 시 대기시간이 존재하는 문제가 있습니다.

Time Sharing System(타임쉐어링 운영체제)

배치처리 운영체제의 문제인 느린 입출력 시간에 의해 CPU가 대기하는 비효율을 막기 위해 도입된 시스템이다. 여러 사용자들이 하나의 CPU에 대해 짧은 시간 단위로 쪼개서 사용하자는 아이디어에서 도입되었다.
이 방식은 응답시간이 빠르고, 컴퓨터 자원이 모든 사용자에 의해 동시에 자용되는 경우는 적기 때문에 자원의 활용을 극대화시킬 수 있지만, 전체적인 처리율은 오히려 떨어질 수 있다.

MULTICS

최초로 Time Sharing 아이디어를 기반으로 1964년에 만들어진 운영체제이다. 미 국방부에서 자금을 지원하고 MIT, AT&T의 벨 연구소(Bell Labs)와 GE(General Eletric)에서 공동연구를 진행하여 만들어진 Unix의 시초격이 되는 운영체제이다. 하지만 엄격한 보안 등을 위해 너무 복잡하고, 속도가 매우 느려 결국엔 프로젝트가 무산되게 된다.

멀티태스킹 운영체제

타임쉐어링 운영체제에서 발전한 형태로, 여러 프로그램이 하나의 CPU를 공유하도록 하여 한 명의 사용자가 여러 프로그램을 사용할 수 있도록 한다. 사실 CPU는 한번에 하나의 프로세스밖에 수행할 수 없기 때문에 매우 빠른 속도로 여러 프로세스를 번갈아서 실행하는 형태이다. 이처럼 다른 다른 프로세스로 전환되기 위해 기존의 프로세스의 상태를 보관하고, 새로운 프로세스의 상태를 CPU에 올리는 작업을 문맥 교환(Context Switching)작업을 하는데, 이것의 오버헤드가 크기 때문에 스케줄링(Scheduling)을 통해 우선순위가 높은 프로세스가 더 자주 실행되도록 하여 오버헤드의 발생을 줄인다.

스케줄링 방식
- 각 프로세스가 동일한 우선순위를 가져 서로 번갈아 수행
- 특정한 프로세스가 더 높은 우선순위를 가져 더 높은 우선순위의 프로세스를 자주 실행

Unix

MULTICS 연구에 참여했던 벨 연구소의 연구원 켄 톰슨(Ken Thompson과 데니스 리치(Dennis Ritchie)는 MULTICS에서 보안 기능을 제거하고 단순화하여 UNIX라는 운영체제를 만들었습니다. 처음의 켄 톰슨이 개발한 UNIX는 어셈블리어로 만들어져서 이식성이 좋지 않았는데, 이를 해결하기 위해 데니스 리치가 고급언어인 C언어를 새로 개발하고, Unix의 3번째 버전 V3부터 C언어로 다시 작성하여 다양한 CPU에서 사용할 수 있게 되었습니다. 벨 연구소의 모회사격인 AT&T는 소스코드를 대학에 개방하고, Unix를 거의 무료로 배포하며 미국 전역에서 Unix가 사용되게 됩니다.
유닉스는 현대 대부분의 운영체제의 조상이며 MacOS, iOS, Android OS, Linux등 우리가 잘 알고있는 운영체제들은 유닉스에서 시작되었다고 볼 수 있습니다.
(BSD 유닉스, 시스템V, Sun의 Solaris, IBM의 AIX, HP-UX, Unicos)

유닉스의 철학
- 다중사용자 시분할 시스템
- 간단한 명령 해석기(Shell) 지원, 다양한 shell이 존재하여 사용자가 선택가능
- 트리 구조의 파일시스템
- 다양한 장치와 객체들을 파일로 접근 가능
- 일반 파일은 문자열로 해석
- 다중 프로세스 지원
- 소켓 지원
- IPC 지원
- 다양한 CPU 지원
- 고급 언어로 작성

유닉스 그 이후

Unix System VBSD UnixLinux
- 벨 연구소의 판권을 가진 최초의 Unix 버전 중 성공사례
- 다양한 상업용 버전으로 발전(AIX, Solaris 등)
- 공개 소스코드를 기반으로 버클리대학에서 개발
- 메모리 관리기능과 네트워크 기능(TCP/IP) 기능이 추가됨
- 상업용 운영체제의 기초가됨(MacOS, SunOS 등)
- 인터넷 상에 소스코드를 공개하여 여러 지원자들에 의해 기능을 추가함
- PC, 서버, 워크스테이션 등 다양한 플랫폼 지원

Linux

1991년 리누스 토발즈(Linus Torvalds)라는 당시 학부생이 오픈소스로 개발한 유닉스 기반 운영체제이다. 리눅스는 사실 정확하게는 GNU/Linux라고 불리는게 맞다. 리눅스 그 자체는 커널을 가리키는 말이고, GNU는 오픈소스 소프트웨어이고, Linux커널을 올린 GNU 프로그램을 이용하여 만든 운영체제가 우리가 지금 흔히 부르는 Linux이기 때문이다. GNU Support Software는 모두가 공유할 수 있는 소프트웨어를 목표로 하기 때문에, 누구나 소스코드를 수정하여 쓸 수 있지만, 자신의 코드를 모두 공개해야 한다.

<GNU Support>
Richard Stallman에 의해 시작되어 모두가 공유할 수 있는 소프트웨어 제작을 목표로 함.
Free Software Foundation 제단에서 지원

어쨋든, 리눅스는 대부분의 하드웨어를 지원하고, 안정성과 성능이 높다. 또한 많은 네트워크 프로토콜을 제공하여 강력한 네트워크 구축이 가능하고, 현재는 많은 리눅스 응용프로그램들도 개발되었다.
현재 우리가 리눅스 커널을 사용하려면 배포판을 이용해야 하는데, 배포판 회사로는 Ubuntu, Redhat, Fedora, CentOS가 있고, 커널뿐만 아니라 여러 응용프로그램들도 배포판에 포함되어 사용자에게 편의성을 제공한다.

Solaris

Sun이라는 기업에서 판매했던 Sun Workstation의 운영체제로, Unix System V와 BSD의 장점을 합쳐 만들었지만, Workstation을 더이상 사용하지 않아 사라지게 되었다. 하지만 운영체제 자체의 면으로 보면 우수한 성능을 자랑하였다.

Mac OS

1984년 애플에서 Macintosh 운영체제를 만들었는데, 이 운영체제는 최초로 사용자에세 GUI(Graphical User Interface)를 제공하였다. 이후 스티브 잡스가 만든 NeXT라는 회사의 NextStep이란 운영체제와 BSD Unix 기반으로 Mac OS X를 개발하였다. 이 Mac OS X는 문서 작성과 더불어, 그래픽과 멀티미디어 분야에서도 많이 사용되었다. MacOS X와 Windows는 CMU의 Mach커널을 기반으로 만들어졌는데, 이 커널은 유닉스 환경을 쉽게 개발하기 위해 만들어진 커널이다.

Android OS

2008년 구글에서 리눅스 기반 운영체제로 휴대폰, 태블릿과 같은 모바일 기기에서 사용된다. 커널부터 SDK(Software Development Kit)까지 모두 오픈소스이기 때문에 여러 제조사에서 사용할 수 있었고, 그로인해 높은 시장 점유율을 가진다.

iOS

Mac OS X를 기반으로 한 모바일용 운영체제이다.







참고문헌
https://velog.io/@ckstn0777/%EC%BB%B4%ED%93%A8%ED%84%B0-%EA%B5%AC%EC%A1%B0
https://blog.geusan.com/45
https://www.javatpoint.com/history-of-operating-system
https://namu.wiki/w/%EB%A9%80%ED%8B%B1%EC%8A%A4?from=Multics
https://dentiqlog.tistory.com/archive/20170112
https://www.gnu.org/gnu/linux-and-gnu.ko.html
https://velog.io/@whdud132/%EC%97%AD%EC%82%AC%EB%A1%9C-%EB%B3%B4%EB%8A%94-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C
https://ko.wikipedia.org/wiki/%EB%8B%A4%EC%A4%91%EC%9E%91%EC%97%85
https://m.blog.naver.com/bycho211/221597856682

profile
Backend Engineer

0개의 댓글