[운영체제] Lecture 2. OS Overview

오젼·5일 전
0

이번엔 Lecture2! - 강의 (1/3), 강의 (2/3), 강의 (3/3)

운영체제의 역할

컴퓨터 하드웨어를 효율적으로 관리해서 사용자 또는 응용프로그램에게 서비스를 제공하는 녀석.

크게 네 가지.

컴퓨터 시스템의 구성

컴퓨터 시스템의 구성을 다시 한번 살펴보자.

OS는 하드웨어를 관리하며 사용자에게 서비스를 제공하는 역할.

시스템 콜 인터페이스: 커널(OS)에 필요한 기능을 요청하는 통로.
커널을 사용자가 직접 조작할 수 있게 하면 안 된다. SCI를 거쳐서 커널을 조작해야 함.
사용자가 사용할 수 있는 기능들을 모아놓은 것.

시스템 라이브러리 = 시스템 콜 인터페이스

운영체제의 구분

강의에선 크게 3가지 분류가 나옴

1. 동시 사용자 수

  • 단일 사용자 OS
    한 번에 한 사람만 사용하는 운영체제.
    동시에 여러 작업(문서 작성, 음악 재생 등)을 할 수는 있지만(멀티태스킹은 가능), 사용자는 한 명이다.
    대표 예: Windows, macOS
    → 예를 들어, Windows는 본래 개인용 컴퓨터(PC)를 위한 운영체제로 개발되었기 때문에, 기본적으로 한 명의 사용자가 로그인해 사용하는 구조였다.
    → 따라서 여러 사용자가 동시에 접속할 수 있는 구조(서버 기능)는 처음엔 필요하지 않았다.
  • 다중 사용자 OS
    여러 명이 동시에 하나의 컴퓨터를 사용하는 운영체제.
    각자 로그인해서 자기 작업을 따로 할 수 있다.
    대표 예: UNIX, Linux
    → UNIX와 Linux는 처음부터 여러 사용자가 원격으로 동시에 접속(SSH 등)할 수 있도록 다중 사용자 환경을 고려해 설계됐다.

2. 동시 실행 프로세스 수

  • 싱글 태스킹 시스템
    순차 처리. 구조 간단.
  • 멀티 태스킹 시스템
    현재 OS들. 작업들 사이의 동시 수행, 동기화 등을 관리해야 함

3. 작업 수행 방식

작업 수행 방식에 따른 구분은 운영체제 발전 역사와도 관련이 있다.

순차 처리. No OS

처음은 순차 처리. 운영체제 개념이 존재하지 않았다.

운영체제가 할 역할을 사용자가 직접 했었음. 실행하는 작업별로 순차 처리를 했다.
각 작업에 대한 준비 시간이 소요된다. 작업이 바뀌면 해당하는 작업에 대한 준비를 매번 바꿔줘야 한다. => 비효율적

Batch Systems

이를 개선하기 위해 배치 시스템이 나온다.

필요한 준비가 같은 작업들을 일괄적으로 모아 한번에 처리.
시스템 지향적. 처리 효율(throughput)이 향상됐다.

하지만 개인적인 입장에서 생산성(productivity)는 저하된다. 왜냐하면 같은 유형의 작업들이 모이기를 기다려야 하기 때문이다.

내가 작업을 제출했다고 바로 결과가 나오는 것이 아니라 기다려야 한다. = 긴 응답시간

Time Sharing Systems

그래서 나온 것이 Time Sharing Systems, 시분할 시스템이다.

여러 사용자가 하나의 컴퓨터를 동시에 사용하는 구조, 실제로는 CPU 시간을 아주 짧게 나눠서 각 사용자에게 번갈아가며 할당하는 방식이다.

실제 연산은 전산소에 있는 중앙 컴퓨터(메인프레임)에서 이루어지고,
사용자들은 키보드와 모니터만 있는 단순한 단말기를 사용해 중앙 컴퓨터에 접속한다.

단말기는 입력과 출력만 담당하고, 연산은 모두 중앙 컴퓨터가 처리한다.
→ 이 구조를 활용한 대표적인 예: Unix

장점: 사용자 지향적이다. 응답 시간이 단축 된다. 생산성이 향상된다. 프로세서 유휴 시간이 감소한다.

단점: 통신 비용 증가, 보안 문제. 통신이 필요하니까 그에 따른 비용과 보안 문제가 필연적으로 따라왔다.
개인 사용자 체감 속도 저하 - 동시 사용자 수가 증가하면 → 시스템 부하가 증가하고 → 체감 속도가 느려진다(개인 관점)

사용자💬
"어우 답답해 나 혼자 썼으면 좋겠는데" → Personal Computing!

Personal Computing

이제는 개인이 시스템 전체를 독점한다. 이제는 CPU 활용률이 고려 대상이 아니다. 사용자 편의성이 더 중점.
혼자 쓰니까 OS가 상대적으로 단순해진다. 여러 명을 관리하지 않아도 되니까. 하지만 사용자가 편리하게 사용할 수 있도록 다양한 기능을 지원하도록 발전한다.

장점: 빠르다. 혼자 쓰니까.
단점: 성능이 낮다. 어차피 혼자 쓰는 거라 고성능 장비까지는 잘 안 씀.


Parallel Processing System

이번엔 Parallel Processing System. 하나의 시스템 안에 둘 이상의 프로세서(CPU)를 사용하는 구조!

위 그림은 Tightly-coupled system을 보여준다.
→ 여러 개의 CPU가 메모리, 버스 등 자원을 공유하면서 함께 동작하는 구조다.

이렇게 많은 CPU를 사용하는 것엔 성능 향상 목적도 있지만 신뢰성 향상의 목적도 있다. 하나의 CPU가 고장 나더라도 다른 CPU가 작업을 할 수 있기 때문에 시스템이 돌아갈 수 있다.

하지만 CPU가 여러 개니까,
→ 이제는 프로세서 간 역할 분담과 협력 방식도 OS가 신경 써야 한다!

그런데 Tightly-coupled system은 확장에 한계가 있다. → CPU를 더 쓰고 싶으면, 기계 내부에 직접 장착해야 함
→ 결국 물리적 한계, 비용 문제, 복잡성 증가

그래서 나온 것이 Distributed Processing Systems 분산 처리 시스템.

Distributed Processing Systems

네트워크를 기반으로 구축된 병렬처리 시스템.

여러 대의 컴퓨터(노드)를 네트워크로 연결해서 마치 하나의 시스템처럼 사용하는 구조다.
이런 시스템은 Loosely-coupled system이라고 부른다.
→ 각 컴퓨터는 독립적인 자원을 가지고 있고, 네트워크로만 연결돼 있다.

  • Tightly-coupled: 한 기계 안에서 CPU 여러 개 → 빠르고 밀접, 하지만 확장 어렵다
  • Loosely-coupled (Distributed): 여러 컴퓨터를 네트워크로 묶음 → 확장 쉽고 유연함!

이제 좀 다른 관점으로 시스템을 구분 해보자.

Real-time Systems

실시간 시스템.
키워드 - Deadline!

작업 처리에 제한시간(deadline)을 갖는 시스템. 제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요한 시스템이다.


여기까지 운영체제의 구분을 알아봤다.
이제 운영체제의 구조를 살펴보자.

운영체제의 구조

커널(핵심부) + 유틸리티(커널을 제외한 나머지).

Kernel + System calls + Utilites 까지가 OS.

운영체제를 어떻게 구성할 것인가?에 따라 다양한 구조가 존재한다.

  1. 단일 구조

    모든 기능이 하나의 큰 커널 안에 들어 있는 구조. 빠르지만 모듈 분리가 없어 유지보수가 어렵다.
  2. 계층 구조

    운영체제를 계층별로 나누어 위에서 아래로 호출하는 구조. 구조가 깔끔하지만, 호출이 많아 성능은 조금 떨어질 수 있음.
  3. 마이크로 커널 구조

    필수 기능만 커널에 남기고, 나머지는 유저 영역으로 분리한 구조. 모듈화가 잘 되어 있고 안정성과 보안성이 뛰어남. 다만 커널 ↔ 유저 공간 간 통신 비용으로 인해 성능 손해가 있을 수 있다.

이제 마지막으로 운영체제의 기능을 정리해보자.

운영체제의 기능

한 마디로 "관리"

여기선 큰 그림만 살펴보자. 앞으로의 챕터에서 자세하게 공부할 것이다.

Process(Program) Management

  • 실행 중인 프로그램(프로세스)들을 관리한다.
  • 동시에 여러 개의 프로그램이 돌아갈 때,
    어떤 걸 언제 실행시킬지 운영체제가 결정한다.

Processor(CPU) Management

  • CPU는 한 번에 하나의 작업밖에 못 한다.
    그래서 운영체제가 CPU 사용 순서를 정하고,
  • 누가 얼만큼 쓸지 공정하게 관리한다.
    → CPU 스케줄링

Memory Management

  • 여러 프로그램이 동시에 돌아갈 때,
    각자 쓸 메모리 공간을 잘 나눠주는 역할
  • 잘못 쓰면 다른 프로그램 메모리를 덮어쓸 수도 있기 때문에
    → 보호, 할당, 회수 같은 기능이 중요함!

File Management

  • 파일을 저장하고, 읽고, 수정하고, 삭제하는 일을 운영체제가 도와줌
  • 디렉터리 구조, 접근 권한, 파일 이름 관리 같은 것도 전부 OS의 몫!

I/O Management

  • 키보드, 마우스, 프린터, 하드디스크 등 입출력 장치들을 관리
  • 프로세서(CPU)는 I/O를 직접 못 하기 때문에
    → 운영체제가 중간에서 입출력을 대신 수행한다

Others

  • 보안(Security): 사용자 간 간섭 방지, 접근 제한
  • 네트워크(Networking): 통신 기능 제공
  • UI/UX 지원: 쉘(shell), GUI 환경 등 사용자 인터페이스 제공

이번 강의는 여기까지.

운영체제는 컴퓨터 자원을 효율적이고 안전하게 사용할 수 있도록 도와주는 관리자다!
각 기능은 뒤에서 더 자세히 공부하게 될 거니까, 지금은 전체 그림만 잡아두자

0개의 댓글