[운영체제] 운영체제 개요 1

ryun·2023년 3월 13일
0

운영체제

목록 보기
1/17

강의 목표

운영체제란
컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로 컴퓨터 시스템의 필수적 부분
우리는 운영체제 설계자 입장에서 이해 (어떻게 만들어졌는가, 무슨 역할을 하는가)

운영체제 예)
마이크로소프트 윈도우즈, 리눅스 위의 안드로이드

운영체제란?

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
컴퓨터 사용자가 컴퓨터 하드웨어적인 것을 몰라도 편하게 사용해줄 수 있게 하는 것
(추상화)
그런 인터페이스 제공
컴퓨터 분야에서 가장 복잡하고 까다롭다

운영체제의 목적

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공

    • 과거엔 한명의 사용자가 한 개의 프로그램만을 사용
      현대엔 멀티로 사용 (한 대에서 동시에 실행)
    • 프로그램 입장에서 혼자 실행되고 있다는 생각으로 실행 => 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공
      하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행하며 내부적인 처리는 운영체제가 해준다
  • 컴퓨터 시스템의 자원 효율적 관리 (CPU, 메모리, I/O 장치 등의 효율적 관리)

    • CPU는 하나인데 쉐어링, 개별 프로그램 입장에서 혼자 사용하는 듯한 느낌을 제공
      빠르게 번갈아 실행하면 느낄 수 없다
      **CPU는 컴퓨터의 두뇌 (연산 속도가 빠르기 때문)
  • 메모리 적절히 분배
    한정된 메모리에서 동시에 프로그램이 돌아가면 얼만큼씩 할당할 것인가
    CPU의 작업 공간인 메모리, CPU에서 실행되려면 메모리에 반드시 올려놔야 한다
    여러 프로 동시 실행될 때, 어떤 프로그램을 효율적으로 올려놓을지 분배한다

한정된 자원을 잘 관리해서 최대한의 성능 뽑아내는 것이 목적

  • 주어진 자원으로 최대한의 성능을 내도록 => 효율성
  • 특정 / 사용자 프로그램의 지나친 불이익 발생하지 않도록 => 형평성
    효율성 극대화가 가장 중요한 목표 > 그렇지 불이익 발생은 No

컴퓨터 시스템의 구조

  • 좌측은 내부 / 우측은 외부 장치
  • 매 순간 CPU가 메모리에서 읽어서 일을 한다
    (I/O는 인풋/아웃풋 디바이스)
    (하드 디스크는 외부장치로 본다 즉, 인풋과 아웃풋을 모두 할 수 있는 장치)

운영체제가 메모리에 올라가서 실행된다 (흰색 부분)
컴퓨터가 꺼지기 전까지 운영체제는 항상 실행되고 핵심은 커널(메모리에 상주하는 운영체제의 부분)이다

CPU의 작업공간에서는 메모리의 기계어를 읽어서 연산한다
CPU가 외부 장치에 접근은 불가, I/O를 전담하는 작은 CPU인 I/O 컨트롤러를 통해 외부 장치에 접근한다 (파일 읽어주세요~ 부탁)

CPU 스케줄링

(운영체제의 가장 중요한 역할)

프로그램을 CPU에 얼만큼 줄 것이냐?
CPU는 하드웨어기 때문에 생각하지 못하고, 모든 하드웨어적 관리는 운영체제의 대행을 통해 이루어진다
프로그램 C가 무한루프 돌면서 CPU 안줄수도 있기 때문에 한정된 시간동안만 쓰게하고 시간이 지나면 하드웨어와 협조해서 사용권을 빼앗아온다.

디스크 스케줄링

파일 읽기를 요청받는 외부의 디스크는 대단히 느린 장치다
파일이 다 읽힐 때까지 기다릴 동안 프로그램이 기다리는 동안 CPU는 다른 프로그램한테 넘어간다

I/O 장치에도 여러 프로그램으로부터 요청이 번갈아가며 온다
먼저 도착한 순서대로 처리하면 자원의 효율성에 어긋남 > 비효율적
나중에 들어온 요청이라도 효율적 처리라면 그렇게 처리한다
ex. 엘리베이터 스케줄링 (올라갈 때 2층사람 같이 태워서 100층 올라감)

인터럽트, 캐싱

목적 : 빠른 CPU와 느린 I/O 장치간 속도차 극복

캐싱: 중간 단계를 주는 것
인터럽트: CPU가 프로그램을 실행하고있을 때, I/O장치에 예외상황이 발생하여 처리가 필요할 경우에 알려 처리할 수 있도록 하는 것

파일 읽기 디스크 컨트롤러에 요청
> 100만 배 빠른 CPU는 놀지 않는다 (자원 낭비!)
> CPU는 당장 일할 수 있는 것을 찾는다
> I/O가 다 읽었으면 일하고 있는 CPU에게 인터럽트 걸어서 전달
> CPU가 기계어 하나 끝나고 나면 인터럽트 체크
> 인터럽트 들어오면 CPU는 무조건 운영체제에 넘어감
> 읽기 작업이 끝났으면 다음 번에 CPU를 얻을 수 있게 해준다

프로세스의 상태

CPU가 기계어 실행중
> 운영체제는 큐를 만들어서 줄세워 놓는다
> 뺏어서 뒤에 줄세우고 앞에 있는게 CPU로 들어감
> 파일 읽어와야하면 쫓겨나서 디스크 입출력 큐로 넘어감 (이 부분은 효율성에 따라 자리가 바뀜)
> 디스크 큐에서 나오면 CPU큐에 들어옴

CPU I/O 반복 : 사람과 인터랙션 하는 프로그램
사람이 키보드 입력
> 키보드 컨트롤러가 인터럽트
> 키보드 인터럽트 들어감
> CPU 운영체제로 넘어감
>입력 데이터를 메모리로 카피해서 사용할 수 있게 한다

ex) I/O 없이 CPU만 오래쓰는 프로그램
유전자 분석, 행렬의 곱셈 등

0개의 댓글