CS 스터디/운영체제

1. 운영체제 소개

doobi 2023. 7. 16. 07:51

1. 운영체제란?

- 하드웨어를 제어하는 SW이고 유저와 하드웨어 사이에서 중계자로써 응용 프로그램 서비스를 제공하는 SW

- 응용 프로그램과 하드웨어 사이에 위치

    - 사용자 -> 응용프로그램 : 서비스 요청

    - 응용프로그램 -> 운영체제: 메세지 전달, 하드웨어 조작 요청

    - 운영체제 : 서비스 작동

[정의] 

- 컴퓨터 위에서 항상 실행되는 하나의 프로그램

- kernel로 정의

- 하드웨어를 제어하는 소프트웨어

- 유저와 하드웨어 사이의 중계자

 

2. 컴퓨터 시스템의 구성

  • 부트스트랩(bootstrap
    - 컴퓨터 전력이 들어오자마자 제일 처음에 수행되는 프로그램
    - 운영체제를 메모리에 적재하는 프로그램
    - 부트스트랩 프로그램 수행 시, 디스크에 저장되어 있는 bootstrap loader를 CPU가 실행하여 디스크에 저장되어 있는 운영체제를 메모리에 올림(디스크 -> 메모리)
  • 인터럽트(Interrupt)
    - 하드웨어가 작동중에 CPU에게 알려주는 신호
    - 시스템 버스를 통해서 CPU에게 신호를 전송함으로써 인터럽트 발생 가능
  • 폰 노이만 구조
    - 폰 노이만이 제시한 프로그램 내장 방식
    1. 명령어 가져오기: 메모리에서 명령어 Fetch, 명령어 레지스터에 명령어 저장
    2. 명령어 실행하기: 명령어 해석하고, 필요한 정보를 가져온 후 실행
    3. 인터럽트 체크
  • 저장장치 계층
    - 계층적 구조
    1. 용량 기준(storage capacity)
    2. 접근 속도 기준(access time)
    - 속도 빠름 , 저장용량 적음
    -  Hard disk > solid-stt disk > main mem(램) > cache > 레지스터 
  • 입출력 구조
    - CPU는 디바이스에게 입출력을 요청
    - CPU와 디바이스는 서로 데이터 통신
    - 디바이스에서 CPU로 인터럽트 전송가능
    - CPU는 메모리로부터 명령을 실행 후 결과를 다시 메모리에 적재 가능
    - 디바이스와 메모리는 DMA(Direct Memory Access) 가능

3. 컴퓨터 시스템의 구조

  • 대칭형 다중 처리(Symmetric Multiprocessing, SMP)
    - 각각의 CPU 프로세서가 모든 작업을 수행하는 가장 일반적인 다중 프로세서 시스템
    - 여러개의 CPU
  • 멀티 코어 설계(Multi-core design)
    - 하나의 물리적 CPU 칩 안에 여러개의 코어들이 포함됨

4. 운영체제 연산들

  • 멀티프로그래밍
    - 메모리에 여러개의 응용 프로그래밍을 적재
    - 하나의 CPU가 하나의 프로그램만 실행 가능
    - CPU가 하나의 프로그램이 대기중일때 다른 프로그램을 수행시켜 효율을 극대화
  • 멀티태스킹(=멀티프로세싱)
    - 멀티프로세싱이란 멀티프로그래밍의 논리적인 확장
    - 프로그램들을 동시에 사용할 수 있게 하는 기술
    - CPU가 동시에 수행되는 것처럼 프로그램들을 교체
    - CPU스케쥴링을 통해 다음 실행 될 프로그램을 고름
  • 운영체제 연산 2가지 모드
    1. 유저 모드
    - 사용자가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드
    - 유저 모드에서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있음
    2. 커널 모드
    - 커널 모드란 잘못된 프로그램으로 인해 다른 프로그램이 잘못 실행되지 않도록 하기 위해 사용되는 모드
    - 커널 모드는 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있음

5. 가상화(Virtualization)

  • 하나의 컴퓨터 하드웨어 위에서 여러개의 다른 운영체제 실행하는 기술.
  • 하드웨어에 VMM(Virtual Machine Manager) 를 올려서 사용

6. 컴퓨터 환경(Computing Environments)

  • 일반적인 컴퓨터
  • 모바일 컴퓨팅(Mobile Computing)
  • 클라이언트-서버 컴퓨팅(Client-Server Computing)
    - 클라이언트와 서버가 1:1 통신
  • P2P 컴퓨팅(Peer-to-Peer Computing)
    - 클라이언트끼리 N:M 통신
  • 클라우드 컴퓨팅(Cloud Computing)
    - 인터넷을 통해서 서버에 접속하는 컴퓨팅 환경
  • 실시간 내장 시스템(Real-Time Embedded Systems)

 

[참고] 
https://github.com/yonghwankim-dev/OperatingSystem_Study
https://yonghwankim-dev.tistory.com/186