OS란 무엇인가🏀

‍서지오·2023년 11월 15일
0

운영체제

목록 보기
1/3
post-thumbnail

이 글을 한국외국어대학교 이윤석 교수님의 운영체제 수업을 스스로 복기하고자 작성한 글 입니다.

프로세서(Processor)

  • 기본적인 명령어들을 처리하는 논리회로를 의미한다.
  • 종류
    • CPU : 기억, 연산, 제어 기능을 총괄하는 장치, 컴퓨터가 동작하는 데 필요한 모든 계산 처리
    • 보조 프로세서 : CPU의 기능을 보조하는 프로세서
    • 마이크로 프로세서 : 소형 디바이스에 장착된 프로세서
  • 시간이 흐를 수록 CPU라는 말이 프로세서를 대체하여 “프로세서 == CPU” 라고 봐도 무방하다.

하드웨어 구성 요소(Computer Hardware Organization)

  • 크게 CPU, Memory, IO 장치로 이루어짐
  • 각 IO 장치마다 Controller 지니고 이를 Simple Bio Processor(단순한 기능을 가진 프로세서)라고도 부른다.
    • 주로 IO 장치와 데이터를 주고 받는 기능을 수행
    • 프로세서가 IO 장치에 직접 접근하는 것이 아닌 각 장치의 cotroller에 명령, 데이터 등을 보내고 controller가 이를 처리한다.
  • Bus
    • 하드웨어 구성 요소들 간 신호를 주고 받을 수 있는 회로선
    • 128bit, 256bit와 같이 많은 회로선(multiple line)으로 이루어져 있다.
    • 종류
      • Data Bus : 데이터를 실어 나름
      • Adddress Bus : 주소를 실어 나름
      • Control(Command) Bus : 제어(명령) 신호를 실어 나(ex. read, write, io status check…)
  • Interrupt
    • IO 장치에서 어떤 사건이 일어났다는 걸 CPU에게 알려주는 방법
    • 하드웨어가 프로세서에게 자신에게 일어나는 사건을 알려주는 방법이다
  • Interrupt Handling
    • CPU가 특정 프로그램 실행 중 Interrupt가 일어나면 Interrupt로 부터 데이터를 읽어와 이를 처리하는 것

컴퓨터 시스템 구성요소(Computer System Components)

  1. Hardware
    1. 기본적인 컴퓨팅 자원을 제공
    2. CPU, Memory, IO 장치, 통신(Communication) 장치
  2. Operating System
    1. 하드웨어 위에 존재하는 소프트웨어
    2. 하드웨어 자원을 관리하는 관리자(하드웨어의 사용을 제어) 역할 수
    3. 하드웨어 자원을 OS위에 존재하는 어플리케이션들이 공평하고 효과적으로 사용할 수 있도록 하는 제공자 역할 수행
    4. 유저들이 컴퓨팅 환경을 자기 혼자 독점해서 사용하는 것과 같은 환상을 제공
  3. System & Application Programs
    1. Application Program : 일반 사용자가 자신을 위해 사용하는 프로그램(ex. 한글, 반디집…)
    2. System Program : 다른 어플리케이션을 도와주는 프로그램(ex. IntelliJ, Pycharm, DBMS…)
    3. OS 입장에서는 시스템 프로그램이나 어플리케이션 프로그램이나 똑같은 프로세스이다.
  4. User
    1. 사람이 될 수도 있고 기계(통신하는 상대편 컴퓨터)가 될 수도 있다.

OS란?

  • Application View

    - 하드웨어 자원을 추상화 한 모습(왼쪽 : 하드웨어, 오른쪽 : 추상화 된 객체)
    - 어플리케이션이 돌아가기 위한 환경을 제공하는 시스템(like virtual machine)
    - 하드웨어 자원들을 논리적인 객체로 어플리케이션에게 제공, 이를 abstract view(추상화)라고 부른다.
  • System View
    • 하드웨어 자원들을 잘 관리하도록 한다.
    • 기능
      • Sharing : 여러 프로세스들에게 하드웨어 자원을 제공
      • Protection : 프로세스들에게 독립적인 실행 환경을 제공하여 간섭 받지 않도록 한다.
      • Fairness : 프로세서들에게 자원을 공정하게 나눠 주는 것
      • Efficency : 시스템 전체 자원들이 공평하게 사용되도록 하는 것(ex. CPU만 많이 사용되고 Memory는 사용하지 않는 걸 방지)
      • Concurrency(병행성) : 여러 하드웨어 자원들이 동시에 병행해서 수행되는 것(ex. CPU가 연산을 잘 수행하는 동시에 IO장치에서도 디스크 자원을 잘 읽고 있고 Network도 패킷을 잘 주고 받는 환경을 제공하는 것)
  • Implementation View
    • Highly-Concurrent : 동시에 여러 장치 및 어플리케션의 작업들을 처리한다.
    • Event-driven : 이벤트가 발생하면 동작한다. (이벤트가 없으면 가만히 있음)
    • Interrupt
      • 하드웨어(IO 장치)에서 일어난 사건을 OS에게 알려줌
    • Trap
      • 어플리케이션이 필요한 OS의 기능을 호출하기 위해 사용하는 명령어
      • OS를 보호하기 위해 기본적으로 어플리케이션이 OS를 직접 호출하지 못하도록 구성되어 있다.
      • Interrupt와 유사하다.
💡 일상 생활 속 사용하는 모든 장치에는 OS가 들어간다!!

OS History

  1. Early System

    • ENIAC(애니악)
    • OS가 존재하지 않음
  2. Batch Processing System

    • Batch : 일괄 처리, 처리해야 할 작업을 모아뒀다가 한번에 처리, off
      • off-line 처리 시스템이다.(실시간 처리와 반대되는 의미)
    • Job : 하나의 작업(프로그램)을 프로세스라는 말 대신 job이라고 불렀다.
    • 하드웨어(카드 리더기, 프린터)가 성능을 결정
  3. Multi Programming System

    • 메모리에 여러 개의 작업이 올라가 동시에 처리되는 것처럼 보이게 해준다.
      • memroy segementation이 필요해 짐
    • IO작업과 CPU 작업을 동시에 수행(overlap)할 수 있게 되었다.
      • CPU 작업 중 IO 작업이 들어오게 되면 CPU가 다음 job을 수행
      • CPU 활용도가 증가
    • OS가 해야 할 일
      • Job Scheduling
      • Memory management
      • CPU Scheduling
      • Protection
    • Spooling
      • 동시에 입출력 장치의 operation이 가능한 것처럼 보여주는 환상
      • 각 IO 장치마다 IO buffer를 두고 각각의 프로세스들은 buffer에 작업을 쓰기만 하면 작업을 완료했다가 인지하도록 하는
    • 여전히 Batch Processing이었다.
    • IC 회로 사용
  4. Time Sharing Systems(Multi Tasking System)
    - On-line processing이다. ⇒ 사용자와 실시간으로 상호작용
    - 실제로는 여러 프로세스가 번갈아가며 cpu를 사용하지만 time-slice가 매우 짧기 때문에 사용자는 동시에 프로그램들이 수행되는 것처럼 인지한다.
    - Time-Sharing

    - 일정한 시간 단위로 메모리에 올라온 프로세스들이 cpu를 번갈아가며 사용하는 것
    - 일정한 시간 단위(이미지의 네모 칸)을 time slice(quantum)이라고 부른다.
    - 추가적으로 위 이미지는 round robin scheduling을 보여준다.

    💡 Multi Programming Systemr과 Multi Tasking System의 차이는 응답성(사용자의 요청에 대해서 시스템이 반응하는데 까지 걸리는 시간)이다.
  5. 4세대 컴퓨터

    • Microprocessor의 등장
    • storage가 커지고 빨라짐
    • cpu가 io 장치에도 일을 맡기게 된다.
      • ex. 네트워크 패킷을 원래는 cpu가 혼자 처리했는데 현재는 네트워크 프로세서와 함께 처리
    • GUI의 등장
    • 인터넷과 웹을 지원
    • 네트워크와 분산 시스템을 지원

Distributed System

  • 네트워크(인터넷) 기반으로 여러 컴퓨터들이 연결된 걸 의미한다.
  • 각각의 컴퓨터(노드)들은 자신의 독립적인 메모리를 지닌다.
  • 특징
    - Resource sharing : 원격에 있는 자원을 사용 가능하다.
    - Parallel computing : 여러 프로세스가 동시에 여러 컴퓨터에서 수행된다.
    - Reilability : 하나의 컴퓨터가 고장나도 다른 컴퓨터에서 작업을 이어 받아 수행할 수 있다. (백업 기능)
    - 사용 예시
    - Cloud
    - NFS : 원격에 있는 디렉토리를 마치 내 로컬 디렉토리 처럼 사용할 수 있도록 해주는 것

Cloud Computing

  • Distributed system의 한 일
  • Hypervisor : 가상화를 지원하는 SW
  • Virtual machine : Hypervisor가 만든 하나의 인스턴스
  • 종류
    • Saas : Ms office와 같이 원격에서 sw를 제공하는 것
    • LaaS : 네이버 클라우드와 같이 원격의 저장소를 제공하는 것
    • PaaS : 구름과 같이 원격 플랫폼을 제공하는 것
    • Daas : 컴퓨터를 제공하는 것

Embedded System

  • 특수한 장치에 들어있는 작은 OS
  • real-time 시스템이다
    • 어떤 작업이 몇 초 내에 수행되어야 한다.
  • 환경에 잘 적응 해야한다.(ex. 온도) - 배터리가 좋아야 한다.
  • IOT(Internet of Things)
profile
백엔드 개발자를 꿈꾸는 학생입니다!

0개의 댓글