Crash Course: Computer Science의 운영체제 부분을 정리했습니다.
운영체제(Operating System)는 컴퓨터가 스스로 프로그램을 실행할 수 있는 능력이 필요해짐에 따라 탄생하게 되었다. 다른 프로그램을 실행하고 관리할 수 있는, 컴퓨터 전원 켰을 때 시작하는 프로그램이다.
Batch Processing 일괄 처리
1950년대에 시작되었다. 처음에는 수동 작업(직접 펀치카드 넣는..)의 보강 용도로 고안되었다.
한 작업을 완료하면 자동으로 다음 작업을 즉시 시작하는 것을 뜻한다.
Device Drievers
초기 프로그래머들의 고통을 덜어주기 위해, 운영체제는 소프트웨어 프로그램과 하드웨어 주변 장치의 중개자로서의 단계를 밟았다. 구체적으로, Device Drievers 라고 불리는 API를 통해 소프트웨어 추상화를 제공한 것이다. 이를 통해 프로그래머는 표준화된 매커니즘을 사용하여 입출력(I/O) 하드웨어와 대화할 수 있었다.
세계 최초의 슈퍼컴퓨터 아틀라스
동시에 여러개의 프로그램을 단일 CPU에서 실행하도록 영리하게 설계되었다.
당시 기계식 프린터 등의 주변기기는 전자CPU에 비해 느렸다. 이러한 I/O가 끝날때까지 기다리지 않고 다음 대기중인 프로그램 실행하고 있도록 설계 했다. 이것이 멀티 태스킹의 시작이다.
가상 메모리
멀티태스킹의 걸림돌은 메모리였다. 이는 각 프로그램에 자체 메모리 블록 할당으로 해결이 가능했다. 이 방법의 단점은 순차적 블록이 아니라는 것. 프로그래머가 계속 추적하기엔 혼란스러운 점이 문제였다. 이 복잡성을 숨기기 위해 운영체제는 메모리 위치를 가상화한다. 가상 메모리 virtual memory 를 사용하면 프로그램은 메모리가 항상 주소 0에서 시작되어 단순하고 일관되게 유지한다고 가정할 수 있다. 실제 물리적 위치는 운영체제에 의해 추상화되어 숨겨져있는 것이다.
이 메커니즘으로 프로그램은 메모리 크기를 유연하게 할 수 있다. 이를 dynamic memory allocation 동적 메모리 할당이라고 한다. 이렇게 운영체제에 엄청난 유연성을 제공하게 되었다. 서로로부터 더 잘 격리되는 것도 장점이다. 문제가 생겼을 때 다른 프로그램 메모리를 건드리지 않을 수 있기에 바이러스 등에서 memory protection(메모리 보호)이 가능하다.
아틀라스는 가상, 보호 메모리를 전부 가진 최초의 컴퓨터 및 OS이다.
UNIX
이제 운영체제는 여러 프로그램, 여러 사용자(터미널)의 handle이 가능해졌다.
Multics → UNIX
개별 사용자는 시간 공유를 통해 자원 중 일부분만 활용 가능했다(multics).
UNIX는 OS를 두 부분으로 분리하고자 했다.
- 커널 : I/O를 다루는 기능인 메모리 관리, 멀티태스킹과 같은 OS의 핵심 기능
- 의도적으로 일부 기능만 남기는 것
- 커널 패닉 : 복구 수단이 없어서 패닉이라는 기능 호출. 원래 패닉이라는 단어 인쇄하고 무한 루프로 들어갔음
- 이런 단순함 덕분에 다양한 하드웨어에서 돌아갈 수 있음!
- 많은 곳에서 사용되었다.
- 7,80년대 가장 인기있는 OS 중 하나
- 1981 MS-DOS 출시
- 멀티 태스킹과 보호된 메모리가 부족하다는 특징들은 그대로
- 충돌이 있다 (재부팅)
- 멀티 태스킹과 보호된 메모리가 부족하다는 특징들은 그대로
- 1985 윈도우 초기 버전
- 이조차 메모리 보호기능이 없었기에 프로그램이 잘못 수행되면 → 블루 스크린
- 최신 버전은 더 나은 보호 기능 제공, 충돌 거의 없다
- 그래서 여러 프로그램을 한번에 실행할 수 있는 것
- 이런 단순함 덕분에 다양한 하드웨어에서 돌아갈 수 있음!
- 추가적으로 제공되지만 커널이 아닌 프로그램과 라이브러리 같은 유용한 도구들
메모리와 저장장치의 역사
- 종이 펀치 카드
- 지연 기억 장치 : 튜브 안에 수은 같은 액체로 채우고 스피커-마이크 압력파를 전기신호로 변환
- EDVAC : 가장 초기의 프로그램 저장식 컴퓨터
- 자기 변형 지연 장치 : 금속
- 자심 기억 장치 : 작은 자기 도넛
- 임의 비트에 언제든 접근할 수 있는 Random Access Memory 기술의 시작.
- 자기 테이프
- UNIVAC
- 테이프는 순차적이라는 한계
- 자기 드럼 기억장치 : 드럼이라고 불리는 금속 실린더
- 하드 디스크 : 말그대로 hard 하다 (!)
- 저장원리는 위와 동일. 표면이 자성을 띤다.
- RAMAC 305 (IBM)
- 저장 용량이 큰 반면 메모리가 충분히 빠르지 않았기 때문에 RAMAC 305 역시 드럼 메모리와 자기 코어 메모리를 가졌다.
- 이후 하드 디스크 드라이브는 눈부신 발전을 이룬다.
- 하드 디스크의 사촌인 플로피 디스크
- 자기 매체 사용
- 레이저 디스크의 형태를 가진 광학 저장 장치
- 위의 작은 버전의 사촌 Compact Disk (CD)
- 하드 디스크의 사촌인 플로피 디스크
- 오늘날에는 하드드라이브나 USB스틱과 같이 움직이는 고체 상태의 기술로 옮겨가고 있다.
- 내부는 집적 회로들
- 비휘발성 고체상태 드라이브 SSD로 대체되고 있는 지금
- 움직이는 부분이 없다. 접근 시간이 따르다! 그러나 RAM 속도보다 몇 배는 느리다.
- 그래서 오늘날의 컴퓨터는 여전히 메모리 계층구조를 사용한다.
- 움직이는 부분이 없다. 접근 시간이 따르다! 그러나 RAM 속도보다 몇 배는 느리다.
파일 & 파일 시스템
모든 파일은 데이터를 이진수로 저장한다.
- 파일 형식은 데이터를 읽고 이해하는 핵심 요소이다.
- 예시
- txt 파일의 경우 텍스트를 이진수로 저장한다.
- WAV
- 이 파일을 올바르게 읽으려면 비트 전송률, 단일 트랙인지 스테레오인지 등의 정보를 알아야 한다.
- 메타데이터 : 이러한 데이터에 관한 데이터
- 헤더에 저장된다. 실제 데이터보다 먼저! 파일 앞에!
- 초당 수천개의 진폭을 각각의 이진수로 저장하느 ㄴ것
- BMP
- 사진은 픽셀로 구성되며 R G B 세 색상의 조합 (기본 색상)
- 메타데이터로 시작하여 이미지의 너비, 높이, 색상의 심도와 같은 키 값을 포함한다.
- 색상의 심도는 빨간색 8비트, 녹색 8비트, 파란색 8비트
- 즉 1 바이트에 저장할 수 있는 수는 0~255!
- 색상의 심도는 빨간색 8비트, 녹색 8비트, 파란색 8비트
저장
하드웨어와 소프트웨어의 추상화
저장장치를 값을 저장하는 작은 버킷의 긴 줄로 생각할 수 있다.
- Directory File
- 다른 파일이 있는 위치를 기록하는 특수 파일
- 이것은 대부분 저장 공간의 앞쪽에 보관되어 액세스 할 위치를 항상 알 수 있다.
- 저장공간의 다른 모든 파일의 이름이 들어 있다.
- 이들은 파일 유형을 식별하는 프로그램을 지원한다.
- 생성되거나 마지막으로 수정된 날짜, 소유자, 읽기/쓰기 가능여부와 같은 메타 데이터를 저장
- 가장 중요한 것은 디렉토리 파일에 저장소에서 이러한 파일이 시작되는 위치와 길이
- 디렉토리 파일의 유지는 저장된 파일을 관리하고 파악하는 운영 체제의 매우 기본적인 파일 시스템의 예
현대 파일 시스템
- 파일을 블록 단위로 저장한다.
- 느슨한 공간이 남는다
- 모든 파일 데이터가 공통 크기로 정렬되어 관리가 간단
- 디렉토리 파일은 저장된 블록을 파악한다
- 파일이 덩어리로 분해되어 여러 블록에 저장되는 것을 허용한다.
- 디렉토리 파일은 파일 당 블록 목록을 저장한다.
- 가상 메모리와 개념적으로 유사하다.
- 파일을 삭제할 때, 저장소에서 실제로 파일 내용을 지우는 게 아니라 기록만 삭제한다. 따라서 블록에 남기에 복구할 수 있다.
- 조각화 : 파일이 저장 공간 전반에 걸쳐 깨지는 경우
- 파일이 생성 , 삭제 및 수정될 때 생기는 불가피한 부산물
- 해결책은 조각 모음!
Flat File System(단층 파일 체계)
모두 하나의 레벨에(디렉토리에) 저장되는 것이다.
그러나 프로그램이 많아지면서 문제가 생겨 방법을 강구하게 되는데..
루트 디렉토리
- 디렉토리 파일이 다른 디렉토리도 가리킬 수 있다.
- 루트 디렉토리 : 파일-디렉토리 중 어느 것인지 파악하기 위해 필요한 추가 메타 데이터
- 파일 옮기기도 쉽다!
이제 파일 시스템으로 원시 비트를 숨길 수 있게 되었다.