본문 바로가기

프로그래밍/컴퓨터공학

운영체제 (1) ~ (3) 주차 학습 노트

728x90
반응형

운영체제

실체가 있는 소프트웨어

사용자하드웨어 사이에서 중계 역할을 하면서, 프로그램의 실행관리하고 제어하는 시스템 소프트웨어

컴퓨터의 자원독점적으로 관리하는 소프트웨어

 

운영체제의 속성

컴퓨터 자원 관리

  • 하드웨어 자원 - CPU, 캐시, 메모리, 키보드, 마우스....
  • 소프트웨어 자원 - 응용프로그램
  • 데이터 자원 - 파일, DB

 

자원 독점

독점 : 자원에 대한 접근과 관리 권한이 오직 운영체제에 있다는 뜻

(자원 할당, 자원 공유, 자원 액세스, 자원 입출력)

 

관리자

프로그램 관리, 메모리 관리

 

소프트웨어

커널(관리 기능을 수행하는 핵심 코드), UI, 도구 프로그램

 

운영체제 목적과 기능

운영체제의 목적(목표)

  • 사용자의 컴퓨터 사용 편리성
  • 자원의 효율적 사용과 관리

 

운영체제 기능

  • CPU/프로세스 관리 (프로세스 적재, 프로세스 실행)
  • 메모리 관리
  • 파일 시스템 관리 (디스크의 빈 영역 등 저장 장치 관리)
  • 장치 관리
  • 네트워크 관리
  • 보안 관리
  • 기타 관리 (부팅, 통계 수집, 정보 관리...)

 

운영체제의 태동

과거

프로그램을 기계에 고착화

전선 등등

고정 프로그램 컴퓨터 <= 한 개의 프로그램을 하드웨어로 고착화 시키는 완전한 하드와이어드 프로그래밍

 

발달

폰노이만의 내장 프로그램 컴퓨터

 

내장 프로그램 컴퓨터

컴퓨터의 구조를 CPU, 메모리로 나누고 명령 코드들을 메모리에 적재하여 실행

 

 

  • 컴퓨터 구조에서 CPU와 메모리 분리
  • 하드웨어와 소프트웨어 개념 분리
  • 실행할 프로그램은 메모리에 담고, CPU가 프로그램을 실행
  • 프로그램은 입력 장치를 통해 메모리에 적재

 

원시 운영체제

로더

목적 프로그램을 읽어 들이는 코드

 

GM OS

1. 컨트롤 패널에서 테이프 장치에 저장된 로더 프로그램을 메모리에 적재시키고 실행

2. 로더 프로그램은 사용자 프로그램을 메모리에 적재

3. CPU가 사용자 프로그램을 실행

 

GM-NAA

오늘날 일종의 배치 운영체제

1. 어셈블러 코드 : 사용자가 작성한 어셈블리어 프로그램을 기계어 코드로 번역

2. 로더 프로그램 : 사용자 프로그램을 메모리에 적재

3. 공통 입출력 코드 및 메인 코드 : 장치 입출력을 다루는 프로그램 코드와 운영체제 시작 코드

 

배치 운영체제

개발자와 관리자가 구분

배치 : 개발자가 작성한 펀치카드의 묶음이며 배치 작업을 줄여 부르는 말

배치가 하나의 프로그램

 

배치처리의 특징

  • 여러 배치 작업들을 모아서 한꺼번에 실행하되 한 번에 한 개씩 순차적으로 실행한다
  • 비대화식이다
  • 프린터에 결과를 출력한다
  • 작업을 요청한 한참 뒤에 결과를 받는다

 

다중 프로그래밍 운영체제

I/O -> CPU 대기 -> CPU 활용율 증가 -> 처리율 증가

CPU의 노는 시간을 최대한 줄여야 했다 (처리율)

 

다중 프로그래밍 기법

여러 프로그램을 메모리에 올려놓고 동시에 실행시키는 기법

CPU가 한 프로그램을 실행하다 I/O가 발행하면 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하여 CPU의 노는 시간을 줄인다 -> CPU 활용률 극대화

 

 

다중프로그래밍 : 여러 개의 프로그램을 동시에 실행시키는 기법

 

배치 운영체제와 다중프로그래밍 운영체제의 실행 비교?

다중프로그래밍 운영체제는 여러개의 프로그램을 동시에 실행시키기 때문에 CPU 활용률과 처리율이 높다

 

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

  • 큰 메모리 이슈
  • 프로그램의 메모리 할당 및 관리 이슈
  • 메모리 보호
  • CPU 스케쥴링과 컨텍스트 스위치이
  • 인터럽트
  • 동기화
  • 교착상태 (무한정 대기)

 

시분할 다중프로그래밍 운영체제

여러 프로그램을 시간 단위로 나누어 번갈아 실행시키는 기법

  • 비대화식 처리방식
  • 느린 응답, 대기 시간

발전

빠른 응답을 제공, 대화식 운영체제 제안

라운드 로빈 : 시분할 운영체제에서 각 프로그램에게 동일한 시간 할당량만큼씩 번갈아 실행시키는 스케쥴링 기법

 

시분할 운영체제는 여러 개의 프로그램을 메모리에 적재하고 시간할당량을 정하여 시간할당량 만큼 메모리에 적재된 모든 프로그램을 돌아가면서 CPU를 할당하고 실행시킨다

 

개인용 운영체제

 

임베디드 운영체제

리눅스 등등

 

 

컴퓨터 시스템과 운영체제

1. 사용자는 응용프로그램이나 운영체제 패키지에 포함된 GUI와 도구 프로그램을 통해 컴퓨터를 활용한다

2. 하드웨어들은 모두 운영체제의 배타적이고 독점적인 지배를 받는다

3. 반드시 운영체제를 통해서만 접근가능하다

 

CPU

메모리에 적재된 프로그램을 실행한다

메모리

프로그램은 실행되기 위해 반드시 메모리에 적재되어야한다

캐시 메모리

프로그램 실행 속도를 높이기 위해 사용한다

버스

주소버스 - 주소 신호

데이터 버스

제어 버스

 

레지스터들에 대한 주소

주소 버스는 주소 값이 전달되는 여러 선의 다발을 부르는 용어

시스템 버스, 입출력 버스

입출력 제어 장치 및 시스템 제어 회로

CPU와 입출력 장치 사이에 데이터가 전달되도록 중계하는 역할

DMAC : 입출력 장치와 메모리 사이 데이터 전송에 CPU 개입 없이 직접 전송

 

CPU와 메모리 관계

32비트 CPU

32개의 주소선을 가진 CPU가 액세스할 수 있는 주소의 범위

2^32개의 서로 다른 주소, 0 ~ 2^32 - 1 번지

2^32 바이트 = 4GB

그러므로 32 비트 CPU에서의 메모리 최대 크기는 4GB

 

CPU

CPU 명령 사이클 : CPU가 한 개의 명령을 처리하는 세부 과정

 

PC(Program Counter) - 실행할 명령의 메모리 주소를 저장하는 레지스터

IR(Instruction Register) -  실행을 위해 메모리에서 읽어온 명령이 저장되는 레지스터

SP(Stack Pointer) - 스택 영역의 꼭대기 메모리 주소를 저장하는 레지스터

 

스택

  • 코드 공간 - 프로그램 코드가 적재되는 메모리 공간
  • 데이터 공간 - 전역 변수가 적재되는 공간
  • 힙 공간 - 프로그램이 실행 중 동적으로 저장할 데이터를 위한 공간
  • 스택 공간 - 함수가 호출될 때 매개 변수나 지역 변수, 함수가 실행을 마치고 돌아갈 주소등을 저장하는 공간

컨텍스트

프로그램이 실행중인 일체의 상황을 정의

현재 실행중인 프로그램의 컨텍스트를 통해 현재 CPU에 들어있는 레지스터들의 값들로 축소하여 정의할 수 있다

 

컨텍스트 스위칭 : 운영체제가 실행중인 프로그램 A 컨텍스트를 저장해두고 다른 프로그램 B를 실행 시키기 위해 프로그램 B의 저장된 컨텍스트를 CPU로 옮기는 것

 

컴퓨터 시스템의 계층 구조

 

운영체제와 사용자의 관계

사용자에게 컴퓨터 시스템을 사용할 편리한 사용자 인터페이스를 제공한다

하드웨어를 제어하는 것은 전적으로 운영체제의 몫

 

운영체제의 필요성

  • 자원 충돌해결
  • 성능 최적화
  • 사용자 시스템 사용 효율화

 

운영체제 기능

  • 프로세스와 스레드 관리
  • 메모리(가상 메모리) 관리
  • 파일 관리 혹은 파일 시스템 관리
  • 장치 관리
  • 사용자 인터페이스
  • 네트워킹

 

운영체제와 커널

운영체제는 도구/GUI 소프트웨어, 커널, 디바이스 드라이버들로 구성되는 소프트웨어다

 

도구/GUI 소프트웨어

 

커널

커널은 부팅 후부터 메모리에 상주 하고, CPU, 캐시, 메모리 등 하드웨어를 관리하고 프로세서의 실행과 중단, 파일 관리 등핵심적인 기능의 집합

  • 프로세스와 스레드 관리
  • 메모리 관리
  • 파일 생성, 삭제, 파일 입출력 등 파일 및 파일 시스템 관리
  • 디바이스 드라이버를 호출하여 장치 입출력

커널 코드는 함수의 형태로 존재한다

응용프로그램은 함수 호출 방식을 통해서 사용한다.

함수 호출은 응용프로그램에서 커널에 접근할 수 없다

시스템 호출 방식은 응용프로그램에서 커널의 함수를 호출하는 방법이다

 

운영체제 커널 인터페이스 : 시스템 호출과 인터럽트

  • 시스템 호출 - 커널과 응용프로그램 사이의 인터페이스
  • 인터럽트 - 커널과 하드웨어 장치 사이의 인터페이스

 

시스템 호출

응용프로그램에서 커널코드를 실행하는 기법

표준 라이브러리, 시스템 호출 라이브러리로 나뉜다

 

커널 시스템 호출

응용프로그램의 자원 접근 문제

응용프로그램이 컴퓨터 자원에 직접 접근하면 생기는 문제

  • 다른 응용프로그램이 적재된 메모리를 훼손가능
  • 다른 응용프로그램이 생성한 파일을 삭제하거나 실행을 훼손
  • 응용프로그램이 운영체제 커널이 적재된 메모리를 액세스 해서 커널의 주요 데이터를 훼손
  • 컴퓨터 시스템 복구 불능

 

사용자 공간, 커널공간 그리고 사용자 모드, 커널 모드로 나눔

이유는?

응용프로그램으로부터 커널 코드와 데이터를 지키기 위해

 

응용프로그램의 자원 접근 불허 -> 자원에 대한 모든 접근은 커널에만 부여

 

사용자 공간과 커널 공간은 가상의 주소 공간

매핑 테이블

 

CPU 사용자 모드와 커널 모드

사용자모드

CPU는 사용자 모드에서 특권 명령으로 불리는 기계 명령들을 실행할 수 없다.

특권 명령 : 입출력 장치나 타이머, 인터럽트 처리, 시스템 중단 등 CPU 기계 명령어

 

커널모드

CPU는 커널모드에서 모든 메모리 공간을 액세스할 수 있고 특권 명령을 실행할 수 있으며 어떤 하드웨어든지 접근하고 제어할 수 있다

 

사용자 모드에서 커널 모드로 전환 경우

1. 시스템 호출

시스템 호출을 일으키는 명령어가 실행 -> CPU는 사용자 모드에서 커널 모드로 변경

CPU 기계 명령에 의해 사용자 모드로 바꿈

 

2. 인터럽트 발생

CPU는 자동으로 커널 모드로 바뀌고 인터럽트 서비스 루틴을 실행한다

 

커널 모드로 바뀌는 이유 : 인터럽트 서비스 루틴이 커널 공간에 있기 때문

 

특권 명령 : 컨텍스트 스위칭, 인터럽트 금지

 

 

 

 

 

 

 

 

 

 

 

 

 

운영체제와 인터럽트

인터럽트 : 장치 입출력 장치나 젖아장치들이 운영체제와 대화하기 위한 방법

 

 

 

 

 

 

 

728x90
반응형