코딩하는 해달이

[운영 체제] 2주차 본문

학교 공부/운영체제

[운영 체제] 2주차

코딩하는 해달 2023. 3. 13. 11:31

참고서적

더보기

운영 체제 - 황기태(생능출판사)

 

운영체제의 개념

운영체제 정의

  • 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계역할을 하면서 프로그램을 실행을 관리하고 제어하는 시스템 소프트웨어
    • 운영체제는 컴퓨터가 아니다
    • 운영체제는 실체가 있는 소프트웨어 - 인터페이스
  • 컴퓨터가 켜질 때 처음으로 적재되어 나머지 모든 프로그램의 실행을 제어하고 사용자의 요청을 처리해주는 소프트웨어
  • 컴퓨터의 자원을 독점적으로 관리하는 특별한 소프트웨어

운영체제의 정의에서 핵심 단어

운영체제는 컴퓨터의 모든 자원(resource) 관리

  • 자원
    • 하드웨어 자원 - CPU,캐시,메모리 등
    • 소프트웨어 자원 - 응용프로그램
    • 데이터 자원 - 파일, 데이터베이스

운영체제는 자원에 대한 독점(exclusive) 권한 소유

  • 자원에 대한 모든 관리 권한은 운영체제에 있음
    • 자원 할당, 자원 공유, 자원 엑세스, 자원 입출력 등
    • 예) 파일 생성 - 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등

운영체제는 관리자 (supervisor)

  • 실행중인 프로그램 관리, 메모리 관리
  • 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등

운영체제는 소프트웨어(software)

  • 커널(kernel)이라고 불리는 핵심코드와,
    • 커널 : 내부에서 동작하는 운영체제의 핵심 부분
  • UI를 비롯한 도구 프로그램들(tool/utility)
    • 예) 탐색기(explorer), 작업 관리자(task manager), 제어판(control panel) 등
  • 장치를 제어하는 디바이스 드라이버들로 구성

 

운영체제의 기능

  • cpu/프로세스 관리
  • 메모리 관리
  • 파일 시스템 관리
    • 디스크의 빈 영역 등 저장 장치 관리
  • 장치 관리
  • 네트워크 관리
  • 보안 관리
  •  기타관리
    • 사용자 관리 - 사용자 계정 관리
    • 통계 - CPU, 메모리, 네트워크의 사용시간, 사용자의 접속 시간 등
    • 오류 발견 및 대응
    • 부팅(booting)

운영체제와 응용 소프트웨어

  운영체제 응용 소프트웨어
목적 컴퓨터 하드웨어나 응용 소프트웨어 등 자원 관리 사용자들의 특정 작업을 보다 편리하게 처리할 목적으로 만들어진 소프트웨어
기능 프로세스, 메모리, 파일 시스템, 입출력 장치 등 자원 관리와 사용자 관리 소프트웨어를 만든 특정 목적만 수행
개발 언어 C/C++, 어셈블리어 C/C++,Java, Python, C#등
실행 부팅 시 메모리에 적재되어 상주하여 컴퓨터를 끌 때까지 실행 사용자가 명령을 통해 실행시키거나 종료시킴
자원에 대한 접근 권한 컴퓨터의 모든 자원에 대해 배타적 독점 사용 권한 컴퓨터 자원을 사용하고자 할 때 반드시 운영체제에게 요청

운영체제의 태동

1. 고정 프로그램 컴퓨터 - 1940대

고정 프로그램 방식

  • 1940년대, 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
  • 운영체제에 대한 개념 없음
  • 소프트웨어와 하드웨어 분리 개념 없음
    • 모든 것이 하드웨어로 제작
  • 프로그래밍
    • 종이에, 프로그램을 구현하는 스위치와 전선 연결도 작성
    • 배선판에 전선 연결, 프로그램을 기계에 고착화
    • 하나의 명령을 구성하기 위해 여러 가닥의 전선 연결
    • 프로그램 전체 구축에 수천 개의 전선 연결, 며칠 소요
    • 새로운 프로그램을 작성할 때 큰 고통
  • 사례
    • 1941년 독일에서 만든 Z3 computer
    • 1944년 영국에서 독일군의 암호를 해독하기 위해 만든 Colossus
    • 1943~1945년 미국에서 만든 최초의 전자식 컴퓨터 ENIAC

2. 내장 프로그램 컴퓨터 - 1945년~

내장 프로그램 방식

  • 1945년 폰노이만에 의해 제안
  • 1951년 EDVAC 컴퓨터를 만들 때 적용
  • 오늘날 컴퓨터의 구조가 됨

내장 프로그램 컴퓨터의 의미

  • CPU와 메모리 분리
  • 소프트웨어와 하드웨어 분리
  • 실행할 프로그램을 메모리에 담고, CPU가 프로그램을 실행하는 방시기
    • 고정 프로그래밍 방식에 비해 획기적인 변화
    • 하드웨어의 변화 없이, 실행시키려는 프로그램만 메모리에 적재
  • 프로그램은 입력 장치를 통해 메모리에 적재
    • 펀치 카드에 구멍을 뚫어 프로그램 작성
    • 카드 리더기로 프로그램을 메모리에 읽어 들임

3. 프로그램 로더의 발견 - 운영체제 개념 시작(1950년대)

프로그램 로딩 시대

  • 운영체제 개념의 시작

IBM 701 메인 프레임

  • 1954년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터
  • IBM의 첫 번째 범용 컴퓨터
  • 판매하지 않고 대여만
  • 기계만 대여하고 어떤 소프트웨어도 제공하지 않았음
    • IBM 701을 빌린 고객이 모든 것을 해야 했음

IBM 701 개발자의 일반적인 개발 형태

  • 첫번째 카드
    • 다음 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성
  • 두번째 카드부터
    • 목적하는 프로그램 작성

로더 프로그램 필요

  • 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요
    • 이 코드를 로더라고 부름
    • 로더는 모든 사용자에게 공통으로 필요

로더 프로그램 필요

  • 오늘날 운영체제의 가장 기본적인 기능?
    • 사용자의 명령을 받아 저장 장치에 담긴 프로그램을 메모리에 적재하는 기능

4. 원시 운영체제 GM OS 탄생 - 1955년

GM OS

  • 1955년, IBM701의 고객 GM에 의해 개발
    • 펀치 카드에 담긴 프로그램을 메모리에 적재하는 로더 프로그램 개발
  • 핵심 개념
    • 로더 프로그램을 사용자 프로그램에서 분리
    • 사용자가 자신의 프로그램을 적재하는 셀프-로더 프로그램 작성의 번거로움을 해서
    • 로더 프로그램을 모니터라고 불렀음
    • 후세대, General Motors Operating System이라고 불렀음

GM OS는 원시적인 최초의 운영체제

  • 사용자 프로그램에서 로더 프로그램을 분리하고,
  • 로더 프로그램을 시스템에 한 개만 두고,
  • 사용자 프로그램을 실행할 때 작동하여,
  • 사용자 프로그램을 읽어 실행시켜준다는 점에서

5. 최초의 운영체제 GM-NAA I/O 탄생 - 1956~1957년

1955년 GM은 IBM 701의 처리 속도를 높인 IBM 704 주문

IBM 704 컴퓨터 활용에 3가지 문제점 발견과 해결 시도

  • 개발자들은 여전히 대기 번호를 뽑고 자신의 차례를 기다린다는 점
  • 많은 시간 비싼 컴퓨터를 놀리고 있다는 점
    • 개발자가 프로그램을 실행시키기 위한 시스템 셋업하는 동안, 컴퓨터는 놀게 됨
  • 입출력 루틴을 개발자 스스로 작성
    • 카드 입력 장치나 테이프 장치를 제어하는 프로그램 코드

최초의 운영체제 GM-NAA I/O 개발

  • 1956년 GM과 NAA(North American Aviation)의 공동 개발
    • 고가의 IBM 704 컴퓨터를 보다 효율적으로 사용하기 위해
    • IBM 701의 모니터 프로그램(GM OS)을 확장하여 구현
  • 운영체제로서의 모습 갖춤
    • 배치 방식(batch operating system)으로 작동
      • 개발자들이 작성하여 쌓아놓은 작업들을 순서대로 하나씩 메모리에 적재, 한 번에 하나의 작업 실행
    • GM-NAA I/O 프로그램을 메모리에 상주(오늘날 운영체제 방식)
    • 입출력 장치들을 제어하는 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유
      • 카드 입력 장치의 입출력, 테이프 입출력, 프린터 출력 등
      • 개발자는 입출력 코드를 작성할 필요 없음

운영체제의 발전

운영체제의 태동 시절

1세대 컴퓨터 시절 - 운영체제 암흑 시대

운영체제의 개념 없음

 

배치 운영체제

출현 배경

  • 컴퓨터의 노는 시간을 줄여 컴퓨터의 활용률 향상

배치 운영체제 컴퓨터 시스템

  • 개발자와 관리자의 구분
  • 자동으로 테이프 장치에 대기중인 프로그램을 한 번에 하나씩 적재하고, 실행

다중프로그래밍 운영체제

출현 배경

  • 1960년대 중반
    • CPU 등 하드웨어 속도 개선, 컴퓨터 가격 증가
  • 프로그램의 실행 형태로 인한 CPU의 유휴시간 발생
    • 프로그램 실행 형태 : CPU 작업 - I/O 작업 - CPU작업 - I/O 작업의 반복
    • I/O 작업이 이루어지는 동안 CPU는 놀면서 대기
  • CPU의 유휴시간을 줄일 필요

다중 프로그램 기법 출현

  • 미리 여러 프로그램을 메모리에 적재
    • 메모리가 수용할 만큼 다수의 프로그램 적재
    • 프로그램 실행 도중 I/O가 발생하면,
    • CPU에게 메모리에 적재된 다른 프로그램 실행시킴

정의

  • 다중프로그래밍은 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 방식

다중프로그래밍 도입으로 인한 이슈

큰 메모리 이슈

  • 여러 프로그램을 동시에 메모리 올려놓기 위해서는 메모리의 크기 늘릴 필요

프로그램의 메모리 할당 및 관리 이슈

  • 몇 개의 프로그램 적재? 메모리 어디에 적재? 프로그램 당 할당하는 메모리 크기?

메모리 보호 이슈

  • 프로그램이 다른 프로그램의 영역을 침범하지 못하게 막는 방법 필요

CPU 스케줄링과 컨텍스트 스위칭

  • 실행시킬 프로그램 선택하는 스케줄링 필요
  • 프로그램의 실행 상태를 저장할 컨텍스트(현재의 작업환경) 정의
  • 컨텍스트 스위칭 필요

인터럽트 개념 도입

  • 운영체제가 입출력 장치로부터 입출력 완료를 전달 받는 방법  필요

동기화(순서대로 접근한다)

  • 여러 프로그램이 동일한 자원을 동시에 액세스할 때 발생하는 문제 해결

교착 상태 해결

  • 프로세스들이 상대가 가진 자원을 서로 요청하면서 무한대기하는 교착상태 해결

시분할 다중프로그래밍(Time Sharing Multiprogramming) 운영체제

출현 배경

  • 다중프로그래밍 운영체제와 거의 동시에 연구 시작
  • 배치 처리와 다중프로그래밍의 다음 2가지 문제점 인식
    • 비 대화식 처리방식
    • 느린 응답시간, 오랜 대기 시간

시분할 운영체제의 시작

  • 1959년 MIT 대학, John McCarty 교수에 의해
  • 빠른 프로그래밍 디버깅 필요
    • McCarty 교수가 당면한 문제
  • 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안 → 유닉스
    • 터미널이란? 키보드+전화선+모뎀으로 구성된 장치 
    • 사용자는 자신의 터미널을 이용하여 메인 컴퓨터에 원격 접속
    • 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령 처리
  • CTSS 시분할 시스템 개발
    • 1962년 MIT

개인용 운영체제

출현 배경

  • 메인 프레임에서, 성능이 향상된 미니 컴퓨터 시대로 바뀜
    • 미니 컴퓨터 역시 한 방을 가득 채울 수준의 크기였음
  • 미니 컴퓨터에서의 시분할 시스템 사용의 불편함
    • 응답 속도 저하 - 많은 사용자로 인해 응답 속도 저하
    • 공간 제약 – 터미널이 있는 전산실에서만 컴퓨터 사용 가능
  • 개인용 컴퓨터 필요성
    • 원격 접속 없이, 가정에서, 혼자 사용

개인용 컴퓨터 등장

  • 마이크로프로세서 CPU 장치 개발
    • 1971년, Intel 4004 처음 시장에 등장
    • 개인용 컴퓨터 등장
  • 메인 프레임이나 미니 컴퓨터에 비해 저렴, 소형

개인용 운영체제 등장

  • 1980년 개인용 운영체제 MS-DOS 등장

임베디드 운영체제

임베디드 컴퓨터

  • 자동차, 비행기 제어 시스템, 공장, 디지털 TV, ATM기, 네비게이터, 엘리베이터 등 가전제품이나, 산업 현장의 기계들, 상용 제품 등에 내장되어 장치들의 목적을 지원하는 소형 컴퓨터

임베디드 운영체제

  • 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능을 수행하며, 장치를 제어하는 프로그램이 원활히 실행되도록 하는 목적

모바일 운영체제

모바일 컴퓨터

  • 하드웨어의 급속한 발전으로 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 커뮤터 출현
  • 스마트폰, 태블릿, 스마트 시계와 같은 입는 컴퓨터 등 어디에서나 휴대 가능한 컴퓨터

모바일 운영체제

  • 모바일 컴퓨터 내 장치들을 구동시키고, 이들을 활용하는 다양한 응용 프로그램을 실행 할 수 있도록 특별히 설계된 운영체제

운영체제의 종류

데스크톱 운영체제

  • PC나 노트북 등 책상에 놓고 사용하는 데스크톱 컴퓨터를 위한 운영체제
    • 개인의 문서 편집, 웹 서핑, 게임, 프로그램 개발, 음악 감상 등 범용 사용
    • 비전문가도 여러 응용 프로그램을 쉽게 활용하도록 하는데 목적

서버 컴퓨터 운영체제

  • 네트워크에 연결하고 24시간 실행되는 컴퓨터, 보안 중요

모바일 운영체제

  • 모바일 전화기, 스마트폰 등 다양한 이동용 혹은 휴대용 장치에서 실행되도록 만들어진 운영체제, 절전과 보안이 중요

임베디드 운영체제

  • 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능

실시간 운영체제

  • 실시간 애플리케이션(혹은 태스크)를 각각 정해진 데드라인 내에 처리되도록 보장하는 것을 목표
반응형
Comments