이번엔 Lecture2! - 강의 (1/3), 강의 (2/3), 강의 (3/3)
컴퓨터 하드웨어를 효율적으로 관리해서 사용자 또는 응용프로그램에게 서비스를 제공하는 녀석.
크게 네 가지.
컴퓨터 시스템의 구성을 다시 한번 살펴보자.
OS는 하드웨어를 관리하며 사용자에게 서비스를 제공하는 역할.
시스템 콜 인터페이스: 커널(OS)에 필요한 기능을 요청하는 통로.
커널을 사용자가 직접 조작할 수 있게 하면 안 된다. SCI를 거쳐서 커널을 조작해야 함.
사용자가 사용할 수 있는 기능들을 모아놓은 것.
시스템 라이브러리 = 시스템 콜 인터페이스
강의에선 크게 3가지 분류가 나옴
작업 수행 방식에 따른 구분은 운영체제 발전 역사와도 관련이 있다.
처음은 순차 처리. 운영체제 개념이 존재하지 않았다.
운영체제가 할 역할을 사용자가 직접 했었음. 실행하는 작업별로 순차 처리를 했다.
각 작업에 대한 준비 시간이 소요된다. 작업이 바뀌면 해당하는 작업에 대한 준비를 매번 바꿔줘야 한다. => 비효율적
이를 개선하기 위해 배치 시스템이 나온다.
필요한 준비가 같은 작업들을 일괄적으로 모아 한번에 처리.
시스템 지향적. 처리 효율(throughput)이 향상됐다.
하지만 개인적인 입장에서 생산성(productivity)는 저하된다. 왜냐하면 같은 유형의 작업들이 모이기를 기다려야 하기 때문이다.
내가 작업을 제출했다고 바로 결과가 나오는 것이 아니라 기다려야 한다. = 긴 응답시간
그래서 나온 것이 Time Sharing Systems, 시분할 시스템이다.
여러 사용자가 하나의 컴퓨터를 동시에 사용하는 구조, 실제로는 CPU 시간을 아주 짧게 나눠서 각 사용자에게 번갈아가며 할당하는 방식이다.
실제 연산은 전산소에 있는 중앙 컴퓨터(메인프레임)에서 이루어지고,
사용자들은 키보드와 모니터만 있는 단순한 단말기를 사용해 중앙 컴퓨터에 접속한다.
단말기는 입력과 출력만 담당하고, 연산은 모두 중앙 컴퓨터가 처리한다.
→ 이 구조를 활용한 대표적인 예: Unix
장점: 사용자 지향적이다. 응답 시간이 단축 된다. 생산성이 향상된다. 프로세서 유휴 시간이 감소한다.
단점: 통신 비용 증가, 보안 문제. 통신이 필요하니까 그에 따른 비용과 보안 문제가 필연적으로 따라왔다.
개인 사용자 체감 속도 저하 - 동시 사용자 수가 증가하면 → 시스템 부하가 증가하고 → 체감 속도가 느려진다(개인 관점)
사용자💬
"어우 답답해 나 혼자 썼으면 좋겠는데" → Personal Computing!
이제는 개인이 시스템 전체를 독점한다. 이제는 CPU 활용률이 고려 대상이 아니다. 사용자 편의성이 더 중점.
혼자 쓰니까 OS가 상대적으로 단순해진다. 여러 명을 관리하지 않아도 되니까. 하지만 사용자가 편리하게 사용할 수 있도록 다양한 기능을 지원하도록 발전한다.
장점: 빠르다. 혼자 쓰니까.
단점: 성능이 낮다. 어차피 혼자 쓰는 거라 고성능 장비까지는 잘 안 씀.
이번엔 Parallel Processing System. 하나의 시스템 안에 둘 이상의 프로세서(CPU)를 사용하는 구조!
위 그림은 Tightly-coupled system을 보여준다.
→ 여러 개의 CPU가 메모리, 버스 등 자원을 공유하면서 함께 동작하는 구조다.
이렇게 많은 CPU를 사용하는 것엔 성능 향상 목적도 있지만 신뢰성 향상의 목적도 있다. 하나의 CPU가 고장 나더라도 다른 CPU가 작업을 할 수 있기 때문에 시스템이 돌아갈 수 있다.
하지만 CPU가 여러 개니까,
→ 이제는 프로세서 간 역할 분담과 협력 방식도 OS가 신경 써야 한다!
그런데 Tightly-coupled system은 확장에 한계가 있다. → CPU를 더 쓰고 싶으면, 기계 내부에 직접 장착해야 함
→ 결국 물리적 한계, 비용 문제, 복잡성 증가
그래서 나온 것이 Distributed Processing Systems 분산 처리 시스템.
네트워크를 기반으로 구축된 병렬처리 시스템.
여러 대의 컴퓨터(노드)를 네트워크로 연결해서 마치 하나의 시스템처럼 사용하는 구조다.
이런 시스템은 Loosely-coupled system이라고 부른다.
→ 각 컴퓨터는 독립적인 자원을 가지고 있고, 네트워크로만 연결돼 있다.
이제 좀 다른 관점으로 시스템을 구분 해보자.
실시간 시스템.
키워드 - Deadline!
작업 처리에 제한시간(deadline)을 갖는 시스템. 제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요한 시스템이다.
여기까지 운영체제의 구분을 알아봤다.
이제 운영체제의 구조를 살펴보자.
커널(핵심부) + 유틸리티(커널을 제외한 나머지).
Kernel + System calls + Utilites 까지가 OS.
운영체제를 어떻게 구성할 것인가?에 따라 다양한 구조가 존재한다.
단일 구조
계층 구조
마이크로 커널 구조
이제 마지막으로 운영체제의 기능을 정리해보자.
한 마디로 "관리"
여기선 큰 그림만 살펴보자. 앞으로의 챕터에서 자세하게 공부할 것이다.
이번 강의는 여기까지.
운영체제는 컴퓨터 자원을 효율적이고 안전하게 사용할 수 있도록 도와주는 관리자다!
각 기능은 뒤에서 더 자세히 공부하게 될 거니까, 지금은 전체 그림만 잡아두자