2장 운영체제 개요 - 운영체제와 정보기술의 원리

이태혁·2020년 9월 26일
0
post-custom-banner

🦊운영체제

  • 하드웨어 바로 윗단에서 사용자 및 다른 소프트웨어를 하드웨어와 연결해주는 소프트웨어 계층

🦊 커널

  • 모든 소프트웨어는 실행하려면 메모리 위에 올라가야함
  • 운영체제는 컴퓨터를 제어하는 소프트웨어이므로 컴퓨터가 켜지자마자 메모리 위에 올라감
  • but 다 올라가면 낭비
  • 그래서 항상 올라가는 부분과 필요할 때만 올라가는 부분으로 나뉨
  • 이때 항상 올라가는 부분이 커널(kernel)이다
    • 운영체제를 좀더 타이트하게 정의하면 이 커널이 좁은의미의 운영체제임
    • 넓은 의미의 운영체제: 커널 + 유틸리티(복사 기능) 등등

🦊 운영체제 기능

  • 사용자를 위해 편리한 인터페이스 제공
  • 시스템 내의 자원을 효율적으로 관리
    • 운영체제 = 자원관리자(resource manager)
  • 보안

🦊🙊 운영체제 분류

동시작업 지원 여부

  • 싱글 태스킹(도스 시절)
  • 멀티 태스킹
    • 시분할 시스템(time sharing system)
      • CPU하나를 여러 프로그램이 돌아가면서 사용할 수 있음 -> 사용자 입장에서는 동시에 실행되는 것으로 보임
    • 프로그래밍 시스템(multi-programming system)
      • 메모리의 경우에는 공간을 나눠서 차지함
    • 대화형 시스템(interactive system)
      • 개개인의 입력 결과를 바로 화면에 표시해주는 시스템

다중 사용자 동시 지원 여부

  • 단일 사용자용 운영체제: 한번에 한명 접속
  • 다중 사용자용 운영체제: 이메일 서버, 웹서버 등

작업을 처리하는 방식

  • 일괄처리(batch processing)

    • 일정작업량이 모이면 한꺼번에 처리
    • 작업량이 쌓여야하므로 시간이 많이 걸림
    • 예) 펀치카드
    • 몰라도 될듯
  • 시분할 방식

    • 여러 사용자들의 요청을 조금씩 나눠가며 처리해줌
    • 대화형 시스템(이런 방식의 대표적인 특징)
      • 요청의 결과를 즉시 보여줌
  • 실시간(real time) 방식

    • 일정 시간안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용

    • 경성 실시간 시스템(hard realtime system)

      • 진짜 위험한거
      • 예시)원자로, 공장제어 시스템, 미사일 제어 시스템
    • 연성 실시간 시스템(soft realtime system)

      • 덜 위험한거
      • 멀티미디어 스트리밍 시스템

🦊 운영체제의 예

  • MS의 윈도우
  • Unix
    • 1969년 벨 연구소에서 최초로 개발
    • 이식성(portability)이 좋음
    • 커널의 크기가 작음, 소스 코드가 공개되어 있음
    • 모듈 단위로 작성
    • 하드웨어나 소프트웨어가 바뀌어도 확장성을 지원
    • 당시 대부분 운영체제가 어셈블리 언어로 작성되었는데 Unix는 C로 작성
    • 안정성

🦊 운영체제의 자원 관리 기능

  • 운영체제의 핵심 = 자원을 효율적으로 관리

    • 소프트웨어 자원

    • 하드웨어 자원

      • CPU, 메모리, 주변장치, 입출력 장치
  • CPU 스케줄링

    • 한 CPU에 여러 프로세스를 어떻게 효율적으로 할당할지를 결정
    • 스케줄링 방식 : 선입선출, 라운드 로빈, 우선순위(priority)
    • 선입선출(First Come First Serve)
      • 먼저 들어온 일을 먼저 처림(아무리 오래걸려도 먼저온게 우선)
    • 라운드 로빈(선입선출의 단점을 해결)
      • 먼저 들어와도 일정시간(밀리초 단위)이 지나면 다음 작업으로 넘어감
      • 완료되지 못한 작업을 대기중인 큐의 목록 중 맨뒤로 감
    • 우선순위 방식
      • 프로세스마다 우선순위를 매겨서 CPU에서 실행시킴
  • 메모리

    • 어떤 프로그램이 어느 메모리를 사용하는지 주소(address)를 이용해서 관리
    • 각 프로그램에 필요한 만큼씩을 계산해서 메모리를 잘 할당해야함
    • 다수의 사용자 프로그램이 동시에 메모리에 올라갔을 경우 서로의 영역을 침범하지 않게 보안을 신경써야함
  • 물리적 메모리 관리 방식

    • 고정분할(fixed partition) 방식
      • 미리 영역을 나눠놓고 프로그램이 들어오면 할당함
      • 영역의 크기 변화없음
      • 영역 크기보다 큰 프로그램 적재 불가
      • 작은 프로그램은 남는 메모리가 생겨서 비효율적임
      • 이렇게 남는 부분을 내부조각이라고함(사실상 안쓰이지만 다른 프로그램에 할당도 못하는 영역)
    • 가변분할(variable partition) 방식
      • 그때그때 나눠서 분할함
      • 고정분할보다 많은 부분에서 개선된 방식
      • 분할의 크기가 개수가 동적으로 변하므로 기술적 관리 기법이 필요
      • 고정분할과 달리 외부조각이 생김
      • 0~99에 A 할당-> 100~199에 B할당 -> A종료 -> 80크기의 메모리를 필요로하는 C를 0~79에 할당 -> 80~99에는 20이하의 크기만 할당할수 있음-> 이게 외부조각
    • 가상메모리(virtual memory) 방식
      - 위 2개와 달리 물리적 메모리 보다 더 큰 프로그램이 실행 가능
      - 프로그램의 모든 부분이 물리적 메모리에 전부 올라갈 필요는 없음
      - 꼭 필요한 부분만 메모리에 올리고 나머지는 보조기억장치에 저장해둠
      - 이를 스왑 영역(swap area)라고 함

      프로그램을 구성하는 가상메모리 주소 공간은 페이지라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다 이렇게 동일한 단위로 메모리를 나누는 기법을 페이징(paging) 기법이라고 한다.

  • 주변장치 및 입출력 장치는 인터럽트(interrupt)라는 매커니즘으로 관리

    • CPU가 원래 하던일을 하다가 주변장치로부터 신호(인터럽트)가 왔을때만 처리해준다.
    • 컨트롤러(controller)
      • 주변장치들을 인터럽트 신호를 보내기 위해 갖고있는 일종의 작은 CPU
profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.
post-custom-banner

0개의 댓글