[OS] 운영체제의 역사
[OS] 운영체제의 역사

[OS] 운영체제의 역사

카테고리
💻 Computer Science
작성자
박용성박용성
작성일
2024년 06월 02일
태그
OS
floatFirstTOC: right

🖥️ 시작하며

이번 포스팅에서는 운영체제에 대한 역사, 왜 운영체제를 배우는지에 소개하려고 합니다.

🔍 왜 운영체제를 배우는가?

notion image

📌 어플리케이션 관점

💡
프로그램을 돌릴 수 있는 편한 환경을 제공받음
  • 프로세서 → 프로세스, 스레드
  • 메모리 → 주소 공간
  • 저장 장치 → 볼륨, 디렉토리, 파일
  • 입출력 장치 → 파일
  • 네트워크 → 파일
 

📌 시스템 관점

💡
여러 프로그램이 돌아갈 수 있도록 관리할 수 있음
notion image

📌 구현 관점

💡
높은 동시성, 이벤트-요청 소프트웨어 구현. 상태변화 대응에 용이
notion image
 
 

🔍 컴퓨터의 역사

📌 1세대 (1945 ~ 55)

💡
운영체제 없음
 

📌 2세대 (1955 ~ 65)

💡
트랜지스터의 등장, 배치 시스템 활용
  • 한 번에 하나의 작업만 가능
    • 카드 리더기, 테이프 드라이브, 라인 프린터 등
  • I/O를 하는 동안 CPU는 놀게 된다는 단점이 존재합니다.
 

📌 3세대 (1965 ~ 80)

💡
집적 회로의 등장, 멀티프로그래밍 시스템의 등장

1️⃣ 멀티프로그래밍 시스템

  • 작업 스케줄링 : 어떤 작업을 먼저 실행할지?
  • 메모리 관리 : 메모리를 할당, 관리를 어떻게 할지?
  • CPU 스케줄링 : CPU 자원을 누구에게 할당할지?
  • 보호 : 각 프로그램이 메모리에 접근하는 것을 어떻게 보호할지?
  • 스풀링:
    • 입출력 작업을 관리해 시스템의 성능을 향상시킵니다. 특정 I/O가 사용 중일 때 다른 작업이 대기하지 않고 계속 진행할 수 있도록 합니다.
       

2️⃣ 시분할 기법

💡
프로그램이 동시에 실행하는 것처럼 보이도록 함 → 멀티태스킹 & 멀티스레딩
  1. 스와핑 (Swapping)
      • 기능: 실행 중인 프로세스를 메모리에서 디스크로 이동하거나, 디스크에서 메모리로 다시 가져오는 작업입니다. 이를 통해 메모리를 효율적으로 사용할 수 있습니다.
      • 장점: 메모리가 부족한 경우에도 여러 프로세스를 실행할 수 있도록 합니다.
  1. 가상 메모리 (Virtual Memory)
      • 기능: 실제 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있게 하는 기술입니다. 프로세스는 가상 주소 공간을 사용하며, 운영 체제는 이를 실제 물리적 메모리와 매핑합니다.
      • 장점: 메모리 관리의 효율성을 높이고, 프로그램이 더 큰 메모리 공간을 사용할 수 있도록 합니다.
  1. 파일 시스템 (File System)
      • 기능: 데이터를 저장하고 관리하기 위한 구조와 알고리즘을 제공합니다. 파일 시스템은 파일과 디렉토리를 조직화하고 접근할 수 있도록 합니다.
      • 장점: 데이터를 쉽게 저장하고 검색할 수 있으며, 보안과 데이터 무결성을 유지합니다.
  1. 고도화된 CPU 스케줄링 (Sophisticated CPU Scheduling)
      • 기능: 여러 프로세스가 CPU를 공평하고 효율적으로 사용할 수 있도록 관리합니다. 다양한 스케줄링 알고리즘이 사용됩니다.
      • 예시: 라운드 로빈(Round-Robin), 우선순위 스케줄링, 멀티레벨 큐 스케줄링.
  1. 동기화 (Synchronization)
      • 기능: 여러 프로세스나 스레드가 자원을 안전하게 공유할 수 있도록 관리합니다. 동기화는 상호 배제(Mutual Exclusion)를 보장합니다.
      • 기법: 세마포어(Semaphores), 뮤텍스(Mutex), 모니터(Monitor).
  1. 프로세스 간 통신 (Interprocess Communication, IPC)
      • 기능: 프로세스 간에 데이터를 교환할 수 있는 메커니즘을 제공합니다. IPC는 협력적 작업을 가능하게 합니다.
      • 기법: 파이프(Pipes), 메시지 큐(Message Queues), 공유 메모리(Shared Memory), 소켓(Sockets).
  1. 인터랙티브 셸 (Interactive Shell)
      • 기능: 사용자가 명령을 입력하고 실행 결과를 즉시 볼 수 있는 환경을 제공합니다. 셸은 명령어 해석기 역할을 합니다.
      • 장점: 사용자가 시스템과 상호작용할 수 있는 직관적이고 즉각적인 인터페이스를 제공합니다.
  1. 보호 (Protection)
      • 기능: 시스템 자원과 데이터를 보호하여 사용자 간의 간섭을 방지합니다. 각 사용자는 자신의 데이터와 자원에만 접근할 수 있습니다.
      • 기법: 접근 제어 목록(ACL), 사용자 인증, 권한 관리.
       

📌 4세대 (1980 ~ )

💡
마이크로프로세서의 등장
마이크로프로세서로 더 작고 빨라지고, 스트로지는 더 빠르고 커지고, 개인용 컴퓨터를 가지게 되고, CPU의 부담을 줄이기 위해 특정 작업을 전담하는 I/O 장치를 사용하게 됩니다.
 
🙋 무어의 법칙 반도체에 집적하는 트랜지스터 수가 2년마다 2배씩 증가한다는 이론
 
 

🔍 Multics

💡
Multiplexed Information and Computing Service, 유닉스의 기초가 된 운영체제 현재 사용하는 운영체제 대부분의 개념이 이 때 창안되었습니다.

1️⃣ 계층적 파일 시스템

  • 파일 / 디렉토리 / 경로 이름 / 작업 디렉토리: 파일과 디렉토리를 계층적으로 구성하여 사용자가 파일을 체계적으로 관리할 수 있게 했습니다.
  • 접근 제어 목록(ACLs): 파일과 디렉토리에 대해 사용자별 접근 권한을 세밀하게 설정할 수 있는 기능을 제공하여 보안을 강화했습니다.
  • 항목의 긴 이름: 파일과 디렉토리 이름에 긴 이름을 사용할 수 있게 하여 더 직관적이고 읽기 쉬운 이름을 사용할 수 있었습니다.
  • 항목의 여러 이름: 하나의 파일이나 디렉토리에 여러 개의 이름을 부여할 수 있는 기능을 제공하여 유연성을 높였습니다.
  • 심볼릭 링크: 파일 시스템 내의 다른 파일이나 디렉토리에 대한 참조를 생성하여 더 편리하게 파일을 관리할 수 있었습니다.
  • 저장소 할당량: 사용자별로 저장 공간을 할당하고 제한할 수 있는 기능을 제공하여 시스템 자원을 효율적으로 관리할 수 있었습니다.
  • 이동식 장치: 이동식 저장 장치를 지원하여 데이터의 이동성과 백업을 용이하게 했습니다.
  • 백업 절차: 정기적인 백업 절차를 통해 데이터의 안전성을 보장했습니다.

2️⃣ 가상 메모리 관리

  • 세그멘테이션 및 페이징: 가상 메모리를 세그멘트와 페이지로 나누어 관리함으로써 메모리 사용의 효율성을 높였습니다. 세그멘테이션은 프로그램을 논리적으로 나누는 방식이고, 페이징은 메모리를 고정된 크기의 블록으로 나누어 사용하는 방식입니다.

3️⃣ 명령 셸을 OS 커널과 분리

  • 명령 셸을 운영체제 커널과 분리함으로써 시스템의 유연성과 확장성을 높였습니다. 사용자와 OS를 분리한 것과 같은 맥락입니다.

4️⃣ 다이나믹 링크

  • 동적 링크를 통해 프로그램이 실행 중에도 라이브러리 코드를 메모리에 로드할 수 있게 하여 메모리 사용 효율성을 극대화하고 업데이트 시의 유연성을 제공합니다.

5️⃣ 고급 언어로 구현 (PL/1)

  • 고급 언어로 구현함으로써 코드의 가독성과 유지 보수성을 향상시켰습니다.

6️⃣ 공유 메모리 관리

7️⃣ 논리 디스크 볼륨을 물리 볼륨에 매핑

8️⃣ 보안 시스템 개발

  • NCSC로부터 B2 등급을 받고, 후속 운영체제인 Honeywell이 최초로 A1 등급을 받았습니다.

9️⃣ MRDS (Multics Relation Data Store)

  • 관계형 데이터베이스와 유사한 개념으로, 현대의 SQL과 비슷합니다.

🔟 스프레드시트 개발

 

🔍 Unix

💡
켄 톰슨과 C언어 창시자인 데니스 리치가 개발
  • C언어로 만들어 이식성을 높였습니다.
  • 대부분은 Multics에서 차용했습니다.
    • 계층적 파일 시스템
    • 프로세스 컨트롤
      • fork, exec, wait, exit 등
    • Shells
      • 명령어를 해석해서 커널로 전달, CLI
    • Signals
      • 커널이 어플리케이션에게 시그널 전달
 

🔍 Multics VS Unix 정리

특징
멀틱스 (Multics)
유닉스 (Unix)
접근 방식
Top-down 접근
Bottom-up 접근
디자인 및 시스템 프로그래밍
150명
2명
개선 작업
추가 50명
-
복잡성 및 비용
매우 복잡하고 고비용 하드웨어
단순성과 사용 용이성, 저비용 하드웨어
대학 채택
-
대학에서 광범위하게 채택
혁신적 아이디어
많은 혁신적 아이디어들이 큰 영향
-
현대 운영체제의 뿌리
-
현대 운영체제의 뿌리
 

댓글

guest