코드 훔쳐보는 변태 코더
춤 좋아하는 백엔드 개발자(였으면 좋겠다)
운영체제 이론 03-14 (정리) 운영체제의 정의와 탄생 배경
더보기
  • 강의 목표
    • 운영체제의 정의와 목표를 알고 기능을 간단히 이해한다.
    • 운영체제가 없던 시절에서 운영체제가 생겨나는 태동 과정을 앎으로써 운영체제의 발단과 역할을 이해한다.
    • 원시 운영체제 이후 운영체제의 발전 과정을 이해한다.
    • 다중프로그래밍 (멀티태스크) 의 출현이 가져온 컴퓨터 시스템과 운영체제의 발전과 영향을 이해한다.
    • 운영체제의 종류와 특징을 간단히 이해한다.

운영체제 정의

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

 

  • 응용소프트웨어
    • 흔히 아는 실행 프로그램
      • 크롬 / 한글 / 엑셀 등등
    • 실제 시스템 소프트웨어는 보이지않는다.
    • Linux , Unix, Windows, Mac Os 등
      • 하드웨어를 제어해준다.
      • Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
  • 운영체제는 컴퓨터의 모든 자원을 관리한다.
    • 자원
      • 하드웨어 자원 - Cpu, Cache , Ram, 디스크, 네트워크, MNU, DMAC (외부적인 장치)
      • 소프트웨어 자원 - 응용프로그램
      • 데이터 자원 - 파일, 데이터베이스 등
  • 운영체제는 자원에 대한 독점 권한을 소유한다.
    • 자원에 대한 모든 관리 권한은 운영체제에 있다.
      • 자원 할당, 자원 공유, 자원 액세스, 자원 입출력 등
        • 램이 한정적이기 때문에 효율적으로 관리할 수 있도록 관리 권한을 위임한다.
      • 에 ) 파일 생성 → 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력 등
  • 운영체제는 관리자이다. (Supervisor)
    • 실행중인 프로그램 관리, 메모리 관리
    • 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 등 관리 등
  • 운영체제는 소프트웨어이다.
    • 커널(kernel) 이라고 불리는 핵심 코드와 UI를 비롯한 도구 프로그램들 (tool/utility) , 장치를 제어하는 디바이스 드라이버들로 구성된다.
    • 커널이 가장 중요한 역할을 가진다.
더보기

시스템 소프트웨어는 눈에 보이지 않는다.

운영체제는 하드웨어 자원과 소프트웨어 자원, 데이터 자원 을 관리한다.

자원에 대한 독접 권한을 소유하고 관리자 역할을 하는 소프트웨어이다. (커널, 도구프로그램, 디바이스 드라이버 들로 구성)

 

운영체제의 목적과 기능

  • 운영체제의 목적
    • 사용자의 컴퓨터 사용 편리성
      • 사용자에게 편리성을 제공한다.
    • 컴퓨터의 자원 관리 효율성
  • 운영체제의 기능
    • CPU / 프로세스 관리
      • 과거엔 cpu에는 하나의 프로세스밖에 없었다.
      • 요즘엔 여러개의 프로세스를 갖고있다.
      • 필요할때만 프로세스가 동작하거나 쉬도록 관리한다.
      • 단순히 디스플레이만 해도 그래픽카드의 프로세스가 동작하고 있는 것이다.
      • 스레드에 대한 개념도 들어간다.
    • 메모리 관리
    • 파일 시스템 관리
    • 장치 관리
    • 네트워크 관리
    • 보안 관리
    • 기타 관리
      • 사용자 관리 / 사용자 계정 관리
      • 통계 → CPU / 메모리 / 네트워크의 사용 시간, 사용자의 접속 시간 등
      • 오류 발견 및 대응
      • 부팅
    • 하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.
    • 응용프로그램을 위해선 실행 언어가 필요하다. (대표적으로 C언어)
더보기

운영체제는 사용자에게 편리성을 제공한다.

하드웨어 / 소프트웨어 사이의 전반적인 관리를 담당한다.

 

운영체제의 태동

  • 고정 프로그램 방식
    • 1940년대 전자식 디지털 컴퓨터가 만들어지기 시작하는 시대
    • 0과 1로 , 고정식으로 모든 연산이 이루어졌다. (로터리 방식 Lottery)
    • 운영체제에 대한 개념이 없었다.
    • 소프트웨어 / 하드웨어 분리 개념이 없고 모든것이 하드웨어로 제작되었다.
    • 프로그래밍
      • 종이에 스위치와 전선 연결로 작성
      • 배선판에 전선 연결, 프로그램을 기계에 고척화 했다.
      • 하나의 명령을 구성하기 위해 여러가닥의 전선 연결
        • 프로그램의 전체 구축에 수천개의 전선 연결 (유지보수 힘듬)
      • 새로운 프로그램을 작성할 때 큰 고통이 있었다.
        1. 41 년 Z3 펌퓨터
        2. 44년 콜로서스
        3. 43~45년 애니악
          1. 진공관 약 18000개로 구성된 30톤크기의 컴퓨터
  • 내장 프로그래밍 방식
    • 45년 폰노이만에 의해 제안되었다.
    • 51년 EDVAC 컴퓨터를 만들 때 적용
    • 오늘날 컴퓨터의 구조가 되었다.
  • 내장 프로그램 컴퓨터의 의미
    • CPU와 메모리 분리
      • 처음부터 메모리에 대한 개념이 나오진 않았을 수도 있다.
      • 계산은 CPU가 했기 때문
    • 소프트웨어 하드웨어 분리
    • 실행할 프로그램을 메모리에 담고 CPU가 프로그램을 실행하는 방식
    • 프로그램은 입력장치를 통해 메모리에 적재
      • 펀치카드에 구멍을 뚫어 프로그램을 작성했다. (새로운 입력장치)
      • 카드 리더기로 프로그램을 메모리에 적재했다.
    • 메모리 장치 ↔
      • 제어장치 CU
      • 연산장치 ALU
      • 레지스터
        • 모든 cpu마다 각각 다른 형태의 레지스터가 있을 수도 있다.
    • 컴노이만 구조에서 기본적인 구조가 바뀌지 않았다.
더보기
  1. 운영체제에 대한 개념이 없던 고정 프로그램 방식 (0과 1로만 연산됨, 하드웨어만 존재)
  2. 오늘날 컴퓨터의 구조가 된 폰노이만 구조를 따르는 내장 프로그래밍 방식 (CPU와 메모리, 소프트웨어와 하드웨어 분리) / 메모리에 프로그램을 적재 후 실행
폰노이만 구조
  • 프로그램 로딩 시대
    • 운영체제 개념의 시작
    • IBM 701 메인프레임
      • 54년 IBM에서 만든 첫 번째 내장 프로그래밍 컴퓨터
      • 첫번째 범용 컴퓨터
      • 판매하지 않고 대여만 가능했다. (완벽하지 않았기 때문)
      • 기계만 대여 , 소프트웨어 제공 X
        • 대여한 고객(기업) 이 모든 것을 했어야 했다.
      • 일반적인 개발 형태
        • 첫번째 카드
          • 카드에 작성된 프로그램을 메모리에 적재하는 코드만 작성 (컴파일)
        • 두번째카드부터 행동하는 프로그램을 작성했다. (실행)
      • 로더 프로그램 필요
        • 개발자가 뒷 카드들을 메모리에 적재하는 프로그램을 첫번째 카드에 작성하는 반복되는 시간 낭비를 줄일 필요가 있었다.
          • 이 코드를 로더라고 부른다.
          • 로더는 모든 개발자에게 공통으로 필요했다.
        • 로더가 운영체제로 발전
          • 오늘날 운영체제의 가장 기본적인 기능
    • GM OS
      • 55년 IBM 701의 고객 기업 GM에 의해 개발되었다.
      • 핵심 개념
        • 로더 프로그램을 사용자 프로그램에서 분리
        • 사용자의 직접 적재해야하는 로더 프로그램 작성의 번거로움을 해소했다.
        • 테이프에 저장, 필요할 때마다 실행
        • 해당 로더 프로그램을 모니터 라고 불렀다.
        • 후세대 Genera lMotors Operating System (GM OS) 라고 불러졌다.
      • 테이프 장치 → 로더 프로그램 → 사용자 프로그램 (여기까지 한번만) → CPU
    • GM은 IBM 701의 처리 속도를 높인 IBM 704를 주문
      • 최초의 운영체제인 GM-NAA I/O 개발
        • 56년 GM과 NAA의 공동개발
          • 운영체제로서의 모습 갖춤
            • 배치 방식으로 작동 (batch operating system)
              • (컴퓨터의 setup과 비슷하다. 루틴을 만들어주는것)
              • 개발자들이 작성해놓은 순서대로 하나씩 메모리에 적재후 실행
          • I/O 프로그램을 메모리에 상주 (오늘날 운영체제 방식)
            • 실제 cpu 는 성능이 좋지만 외부로 나가는것은 그만큼 성능이 떨어진다.
            • cpu는 대부분 64비트 이지만 출력하는 것들은 대부분 32비트 (데이터가 반절)
            • 그런것들을 효율적으로 쓰기 위해서 루틴들을 라이브러리 형식으로 갖추고 프로그램 사이에 공유
      • 어셈블러 코드
        • 어셈블리어 프로그램을 기계어 코드로 번역해줌
      • 운영체제 메인 코드와 공통 입출력 코드
        • 운영체제 메인 코드 - 시작 코드
        • 공통 입출력 코드 - 장치 입출력을 다루는 프로그램 코드
          • 라이브러리 개념 등장
            • 별도로 제어할 수 있도록

 

더보기
  1. 로더 프로그램이 필요했던 운영체제 개념의 탄생
    • 로더가 운영체제로 발전되었다.
  2. 로더 프로그램 , 사용자 프로그램을 분리한 GM OS 탄생 (로더 프로그램 작성의 번거로움 해결)
  3. 배치 방식으로 작동하는 제대로된 운영체제라 할 수 있는 GM-NAA I/O 개발 (작성해놓은 프로그램 순서대로 메모리에 적재후 실행되는 방식, 루틴을 라이브러리 형식으로 갖춤)

운영체제 태동 시절

  • 1세대 컴퓨터 시절 → 운영체제 암흑 시대
    • 운영체제 개념이 없었다.
  • 배치 운영체제
    • 컴퓨터가 유효시간이 발생하게 되었다.
    • 효율적으로 사용하기 위해서 개발자와 관리자가 구분되었다.
    • 개발자 → 펀치카드를 입력 덱에 두고 결과를 기다림
    • 관리자 → 한번에 하나씩 적재하고 실행하도록 관리
  • 다중 프로그래밍 운영체제
    • CPU속도 개선, 컴퓨터 가격 증가
    • 많은 사업자들이 활용할 수 있는 기회가 생겼다.
    • CPU작업 →IO 작업 → CPU작업 → ..의 반복
    • IO작업이 이루어지는 동안 CPU는 놀면서 대기했기 때문에 CPU의 유효시간을 줄일 필요가 있었기때문에 다중 프로그래밍 기법 출현
      • 프로그램 실행중에도 입출력을 계속 해라!
  • 다중 프로그래밍으로 인한 이슈
    • 메모리의 크기를 늘릴 필요가 있었다.
    • 메모리 할당 및 관리 이슈
    • 프로그램이 다른 영역을 침범하지 못하도록 막는 방법이 필요했다.
    • CPU 스케줄링과 컨텍스트 스위칭
      • 프로그램의 실행 상태를 저장할 컨텍스트 정의
      • 컨텍스트 스위칭이 필요했다.
        • 여러개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것. 즉, CPU에 실행할 프로세스를 교체하는 기술이다.
        • 컨텍스트 스위칭을 하는 주체는 스케줄러이다.
    • 인터럽트 개념 도입
      • IO 장치로부터 입출력 완료를 전달받는 방법이 필요했다.
    • 동기화
      • 여러 프로그램이 동일한 자원을 동시에 액세스할때 발생하는 문제 해결 필요
    • 교착 상태 해결
      • 프로세스들이 상대가 가진 자원을 서로 요청하면서 발생하는 문제 해결 필요
  • 시분할 다중 프로그래밍 운영체제
    • 시분할 운영 체제는 많은 사용자들이 컴퓨터를 공유하도록 한다 .
    • 다중 프로그래밍 운영체제와 거의 동시에 연구가 시작됨
      • 비 대화식 처리방식과 느린 응답시간, 오랜 대기시간의 문제점 인식
    • 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
      • 터미널 → 키보드 + 모니터 + 전화선 + 모뎀
      • 사용자들은 터미널을 이용하여 메인 컴퓨터에 원격으로 접속하였다.
      • 운영체제는 시간을 나누어 돌아가면서 각 터미널의 명령을 처리 할 수 있다. → CTSS 시분할 시스템 (1962 MIT)
        • 프로그램 ↔ 시분할 운영체제 ↔ 터미널

 

더보기
  1. 배치 운영체제다중 프로그래밍 운영체제시분할 다중 프로그래밍 운영체제 순서로 발전
  2. 유효시간을 줄일 필요가 있었기에 배치 운영체제에서 다중 프로그래밍 운영체제로 발전
  3. 컨텍스트 스위칭과 인터럽트의 개념이 생겼다.

https://velog.io/@hayeon/Context-Switching%EC%99%80-Interrupt

 

Context Switching와 Interrupt

우리 눈에는 여러가지 프로그램은 동시에 실행시키는 것으로 보이지만, 사실 여러개의 프로세스를 짧은 시간 번갈아 실행시키면서 동시에 실행하는 것처럼 보이는 것입니다. 이는 CPU는 한번에

velog.io

 

개인용 운영체제

  • 출현 배경
    • 메인 프레임 → 성능 향상된 미니 컴퓨터 시대
    • 사용자가 늘어나게 되면서 개인용 컴퓨터의 필요성을 느끼게 됨
      • 원격 접속 X 개인으로 사용
    • 인텔 4004 가 시장에 등장 (1971) 마이크로 프로세서 CPU장치 (애니악에 버금가는)
    • CPM을 모티브해 나온것이 1980년 개인용 운영체제 MS-DOS 등장 (320KB)
  • 임베디드 컴퓨터 (내장형)
    • OS를 기본으로 사용하는 다양한 시스템이 나오게 되었다.
    • 소형 컴퓨터
    • 임베디드 시스템 : (영어: embedded system, 내장형 시스템 )은 기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템으로 장치 내에 존재하는 전자 시스템이다.
  • 임베디드 운영체제
  • 모바일 컴퓨터
    • 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 컴퓨터 출현
  • 모바일 운영체제
  Comments,     Trackbacks