[운영체제] 서론

.·2021년 6월 25일
1

운영체제

목록 보기
1/6

목표

  • 컴퓨터 시스템의 일반적인 구성과 인터럽트 역할
  • 현대 다중 처리기 컴퓨터 시스템의 구성요소
  • 사용자 모드에서 커널 모드로의 전환
  • 다양한 컴퓨팅 환경에서의 운영체제의 사용

운영체제의 역할과 정의

컴퓨터 구조

컴퓨터 구조는 4가지로 나뉘어진다.

  • 하드웨어 : 중앙처리장치 (CPU), 메모리 및 입출력 장치로 구성 되어 기본 계산용 자원을 제공
  • 운영체제 : 다양한 응용프로그램 간의 하드웨어 사용을 제어하고 조정
  • 응용 프로그램 : 사용자의 계산 문제를 해결하기 위해 자원을 어떻게 사용될지 정의
  • 사용자

운영체제

  • 운영체제 : 컴퓨터 하드웨어를 관리하는 소프트웨어
  • 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중개자 역할을 함
  • 운영체제의 목표는 사용자가 컴퓨터 프로그램을 편리하게 이용하는 것

역할

  • 사용자 관점 : 사용자의 편의를 위해 설계되고 자원의 이용은 신경 X
  • 시스템 관점 : 자원을 적절하게 할당, 입출력 장치와 사용자 프로그램을 제어

정의

  • 운영체제는 자원을 제어하고 할당함
  • 보편적인 정의는 없으나 일반적으로 커널, 시스템 프로그램, 응용 프로그램이 포함
  • 커널 : 항상 실행되는 프로그램
  • 시스템 프로그램 : 시스템 실행 중에 시스템을 관리
  • 응용 프로그램 : 시스템 작동과 관련 없는 모든 프로그램
  • 미들웨어 : 응용 프로그램 개발을 쉽게 하고 기능을 제공

컴퓨터 시스템의 구성

컴퓨터 시스템

  • 하나 이상의 CPU와 구성요소와 공유 메모리 사이의 액세스를 제공하는 공통 버스를 통해 연결된 여러 장치 컨트롤러로 구성
  • 각 장치 컨트롤러는 특정 장치를 담당
  • 각 장치 컨트롤러는 로컬 버퍼와 특수 목적 레지스터 집합을 지님
  • 장치 컨트롤러는 제어하는 주변 장치와 로컬 버퍼간의 데이터를 이동
  • 장치 컨트롤러마다 장치 드라이버가 있음

인터럽트

개요

  • 하드웨어는 언제든지 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생 시킬 수 있음
  • 시스템 버스는 주요 구성 요소 사이의 주요 통신 경로
  • 소프트웨어는 시스템콜을 통해 인터럽트 발생
  • 인터럽트는 적절한 서비스 루틴으로 제어를 전달
  • 인터럽트 벡터(배열)는 서비스 루틴들의 주소를 지님
  • 인터럽트가 발생됬을 때 따른 인터럽트가 동시에 발생 불가능

CPU가 인터럽트 됬을 때

  • 하고 있는 것을 멈춤
  • 고정된 위치로 실행을 옮김
  • 고정된 위치는 해당 인터럽트를 위한 서비스 루틴이 위치한 시작 주소를 지님
  • 인터럽트 서비스 루틴 실행
  • 인터럽트 됬던 연산을 재개

구현

  • CPU 하드웨어에 인터럽트 요청 라인 존재
  • 하나의 명령어의 실행을 완료할 때마다 CPU가 이 선을 감지
  • CPU가 컨트롤러가 인터럽트 요청 라인에 신호를 보낸것을 감지하면 인터럽트 번호를 읽어 인터럽트 벡터의 인덱스로 사용
  • 인터럽트 핸들러 루틴으로 점프
  • 해당 인덱스와 관련된 주소에서 실행을 시작
  • 인터럽트 처리기는 작업 중 변경 될 상태를 저장, 인터럽트 원인 확인, 처리 수행, 상태 복원 수행
  • 모든 처리를 마친 후 CPU를 인터럽트 전 실행 상태로 되돌림
  • 장치 컨트롤러 : 인터럽트 요청라인에 신호를 선언 시켜 인터럽트를 발생시킴
  • CPU : 인터럽트를 포착 후 인터럽트 핸들러로 디스패치
  • 핸들러 : 장치를 서비스 한 후 인터럽트를 지움

인터럽트 구동 방식의 입출력 사이클

  • CPU가 장치 드라이버 입출력 개시 후 하나의 명령이 끝날 때마다 인터럽트 요청 라인 확인
  • I/O 컨트롤러가 입출력 개시
  • 입력 준비 완료, 출력 완료, 에러가 발생하면 인터럽트 신호 발생
  • CPU는 인터럽트를 전달 받으면 제어를 인터럽트 핸들러에 넘김
  • 인터럽트 핸들러가 데이터를 처리하고 인터럽트에서 복귀
  • CPU는 인터럽트로 중단된 작업의 처리를 재개

저장장치 구조

  • 메인 메모리 : CPU가 직접 접근 할 수 있는 메모리
  • DRAM - Dynamic Random Access Memory 기법으로 구현
  • 휘발성이라 전원이 꺼지거나 손실되면 내용이 손실됨
  • 보조 저장장치 : 대량의 데이터를 영구히 보존 - 하드디스크
  • 2차 저장장치라 불림, 휘발성 X, 대량의 용량 제공
  • 3차 저장장치 : 광학 디스크, 자기테이프

컴퓨터의 명령-실행 사이클

  • 폰 노이만 구조 시스템에서 명령-실행 사이클은 다음과 같다.
  • 메모리부터 명령을 인출해 명령 레지스터에 저장
  • 명령을 해독 후 필요하면 피연산자를 메모리부터 인출하여 내부 레지스터에 저장
  • 피연산자에 대해 명령을 실행 후 결과를 다시 메모리에 저장
  • 메모리들의 상호작용은 적재(load), 저장(store) 명령을 통해 이루어짐
  • 적재 : 메인 메모리부터 CPU 내부 레지스터로 한 바이트 또는 워드를 옮김
  • 저장 : 레지스터 내용을 메인 메모리로 옮김

부트스트랩

  • 부트스트랩 프로그램 : 컴퓨터 전원을 키면 가장 먼저 실행
  • 펌웨어라 부르는 ROM, EEPROM에 저장되어 있음
  • OS 커널을 실행 시킴

저장장치 우선순위

  • 저장장치는 속도,비용,휘발성에 따라 다음과 같은 우선순위를 지님

캐싱

  • 정보는 통상 어떤 저장장치에 보관
  • 정보가 사용됨에 따라 더 빠른 장치인 캐시에 일시적으로 복사
  • 어떤 정보가 필요할 때 캐시에 있는지 확인 후 있으면 캐시로부터 직접 사용
  • 없으면 메인 메모리에서 정보를 가져와 사용 후 캐시에 넣음
  • 캐시 크기와 관리는 중요한 설계 문제

입출력 구조

  • 시스템 : 범용 버스를 통해 데이터를 교환하는 여러가지 장치로 구성된 범용 컴퓨터
  • 입출력 : 장치,메모리,로컬 버퍼사이의 데이터 교환
  • 장치 : 키보드, 모니터, 마우스, 디스크 등

입출력 컴퓨터 작업

  • 입출력 작업을 시작하기 위해 장치 드라이버는 장치 컨트롤러의 적절한 레지스터에 값을 적재
  • 장치 컨트롤러는 레지스터의 내용을 검사 후 수행할 작업을 결정
  • 컨트롤러는 장치에서 로컬 버퍼로 데이터 전송을 시작
  • 데이터 전송이 완료되면 장치 컨트롤러는 드라이버에게 작업 완료를 알림
  • 드라이버는 읽기 요청이면 데이터 또는 포인터를 반환하며 운영체제에 제어를 넘김
  • 다른 작업일 경우 "쓰기 완료" 처럼 상태 정보를 넘김
  • 컨트롤러가 장치 드라이버에게 작업을 완료했다고 인터럽트를 통해 알림

동기, 비동기

  • 동기 입출력 : 입출력 작업을 시작한 후 입출력 작업이 끝난 후 제어를 돌려 받음
  • Wait 명령을 통해 CPU를 대기 시킴
  • 비동기 입출력 : 입출력이 시작한 후 사용자 프로그램에게 바로 제어를 넘김
  • 유저 프로세스는 동기 입출력을 사용하고 OS는 비동기 입출력 사용

DMA (직접 메모리 엑세스)

  • 장치에 대한 버퍼, 포인터, 입출력 카운터를 세팅
  • CPU의 개입 없이 장치 컨트롤러가 자신의 버퍼 저장장치에 바로 데이터 블록을 보냄
  • 일반적으로는 바이트 당 인터럽트가 발생하지만 DMA를 사용 시 블록당 하나의 인터럽트만 발생
  • 장치 컨트롤러가 전송을 할 때 CPU는 다른 작업을 수행

컴퓨터 시스템 구조

  • 이전에는 단일 처리기 시스템을 사용
  • 현재에는 다중 처리기 시스템이 발전하고 많이 쓰이고 있음

단일 처리기 시스템

  • Single Processor System
  • 코어 : 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성요소
  • 단일 처리 코어를 가진 범용 CPU가 하나만 있으면 단인 프로세서 시스템

다중 처리기 시스템

  • Multiprocessor System
  • 단일 코어 CPU가 있는 두개 이상의 프로세서 존재
  • 프로세서는 컴퓨터 버스, 클록, 메모리, 주변 장치 공유
  • 장점 : 처리량 증가
  • 현대에는 컴퓨팅 코어가 단일 칩에 상주하는 다중 코어 시스템 포함
  • 하나의 처리기에 코어가 여러개 존재하며 L1 캐시, L2 캐시 존재

클러스터형 시스템

  • 다중 처리기 시스템과 비슷하지만 다중 시스템이 같이 작동한다는 점이 다름
  • 일반적으로 클러스터 컴퓨터는 저장장치를 공유하고 LAN 같은 상호 연결망을 통해 연결
  • 높은 가용성을 제공해 하나의 컴퓨터 시스템이 고장 나더라도 서비스 제공
  • 스토리지 전용 네트워크(SAN)을 통해 저장장치 공유
  • 비대칭형 클러스터링 : 한 컴퓨터가 긴급 대기 모드 상태 유지
  • 대칭형 클러스터링 : 둘 이상의 호스트들이 서로 응용프로그램을 실행하고 감시

운영체제의 작동

  • 운영체제는 프로그램이 실행되는 환경을 제공
  • 부트스트랩 프로그램은 주로 컴퓨터 하드웨어 내에 펌웨어로 저장되어 있음
  • 컴퓨터를 키면 부트스트랩 프로그램이 실행
  • CPU 레지스터, 장치 컨트롤러, 메모리 내용을 모두 시스템 측면에서 초기화
  • 운영체제 커널을 찾아 메모리에 적재
  • 커널모드가 실행되면 인터럽트가 발생할 때 까지 대기
  • 트랩 : 사용자 프로그램의 특정 요청 때문에 발생하는 소프트웨어 생성 인터럽트
  • 트랩은 시스템 콜이라는 특수 연산을 실행하여 요청됨

다중프로그래밍과 다중태스킹

다중프로그래밍 (MultiProgramming)

  • 일반적으로 하나의 프로그램은 CPU나 I/O 장치를 항상 바쁘게 유지 불가능
  • 또한 사용자들은 일반적으로 두가지 이상의 프로그램을 한 번에 실행
  • CPU가 항상 한 개는 실행할 수 있도록 프로그램을 구성
  • 프로세스 : 실행중인 프로그램
  • 운영체제는 여러 프로세스를 동시에 메모리에 유지
  • I/O 작업처럼 대기를 해야 할 때 따른 프로세스 실행

다중 태스킹 (multitasking)

  • 다중 프로그래밍의 논리적 확장
  • CPU는 여러 프로세스를 전환하며 사용자에게 빠른 응답 시간을 제공
  • 가상 메모리를 통해 일부만 메모리에 적재된 프로세스의 실행을 허용
  • 논리적 메모리를 물리 메모리부터 분리

이중모드와 다중모드 운용

  • 사용자 모드, 커널 모드로 나뉘어짐
  • 모드 비트라는 비트가 모드를 나타냄 ( 커널모드(0), 사용자모드(1) )
  • 이중모드를 통해 OS와 다른 소프트웨어 자원을 보호

커널모드와 사용자모드의 변경

  • 시스템 부트 시, 하드웨어는 커널 모드에서 시작
  • 운영체제가 적재 후 사용자 모드에서 사용자 프로세스가 실행
  • 트랩, 인터럽트가 발생할 때마다 하드웨어는 사용자 모드를 커널 모드로 전환
  • 운영체제가 컴퓨터의 제어를 얻을 때마다 커널 모드로 변경
  • 사용자 프로그램으로 제어를 넘기기전에 사용자 모드로 변경

타이머

  • 운영체제가 CPU에 대한 제어를 유지할 수 있도록 보장
  • 사용자 프로그래밍 무한 루프에 빠질 경우를 대비
  • 고정 타이머 : 일정 시간 이후에 인터럽트 발생
  • 가변 타이머 : OS가 계수기 값을 감소시켜 0이 되면 인터럽트 발생
  • 사용자에게 제어를 넘기기전에 OS는 타이머가 인터럽트를 할 수 있도록 설정 되었는지 확인

자원 관리

프로세스 관리

  • 프로세스 : 실행중인 프로그램
  • 프로그램은 수동적 개체, 프로세스는 능동적 개체
  • 프로세스는 CPU, 메모리, I/O, 파일 등 여러가지 자원을 필요로 함
  • 프로세스를 종료하면 재사용 가능한 자월을 회수
  • 프로세스는 다음 수행할 명령을 지정하는 프로그램 카운터(PC)를 지님
  • 멀티 쓰레드 프로세스는 프로세스당 하나의 PC를 지님

메모리 관리

  • 메인 메모리 : CPU, 입출력 장치에 의해 공유되는 빠른 접근이 가능한 데이터 저장소
  • 명령어 인출 사이클 동안 메인 메모리부터 명령을 읽음
  • 자료 인출 사이클 동안 메인 메모리부터 데이터를 읽고 씀
  • CPU가 디스크에서 가져온 데이터를 처리하기 위해서는 데이터가 먼저 메인 메모리로 전송되어야 함
  • 프로그램이 수행되기 위해서는 절대 주소로 매핑되고 메모리에 적재되어야 함
  • 프로그램이 종료되면 프로그램이 차지하던 메모리 공간이 가용공간으로 선언 후 다음 프로그램이 적재됨
  • 메모리 관리 기법 : CPU 활용성, 컴퓨터 자원을 최적화
  • 메모리의 어느 부분이 사용되고 있는지, 어느 프로세스에 의해 사용되는지 추적
  • 필요에 따라 메모리 공간을 할당하고 회수
  • 어떤 프로세스를 메모리에 적재하고 제거할 것인가를 결정

저장 장치 관리

  • OS는 저장장치의 물리적 특성을 추상화하여 논리적인 저장 단위인 파일 정의
  • 파일을 물리적 매체로 매핑하여 저장장치를 통해 이들 파일에 접근
  • 파일은 통상 디렉토리들로 구성
  • 파일 시스템에 대한 접근 권한 관리

대용량 저장장치 관리

  • 모든 데이터를 메인 메모리에 저장할 수 없음
  • 메인 메모리를 백업하기 위해 보조저장장치를 제공
  • 보조 저장장치, 3차 저장장치 사용

캐시 관리

  • 저장장치의 계층 구조에서 각 수준 간의 저장 정보 이동은 하드웨어 설계나 운영체제에 따라 명시적 또는 묵시적으로 이루어짐
  • 캐시로부터 CPU, 레지스터로위 데이터 전송은 하드웨어적으로 이루어짐
  • 디스크, 메모리 간의 데이터 전송은 운영체제에 의해 이루어짐

입출력 시스템 관리

  • 운영체제의 목적 중의 하나는 사용자에게 특정 하드웨어 장치의 특성을 숨기는 것
  • UNIX에서 입출력 장치의 특성은 입출력 서브시스템에 의해 숨겨져 있음
  • 입출력 시스템은 다음과 같이 구성
  • 버퍼링, 캐싱, 스풀링을 포함한 메모리 관리 구성 요소
  • 일반적인 장치 드라이버 인터페이스
  • 특정 하드웨어 장치들을 위한 드라이버
  • 스풀링 : 컴퓨터 시스템에서 중앙처리장치와 입출력장치가 독립적으로 동작하도록 함으로써 중앙처리장치에 비해 주변장치의 처리속도가 느려서 발생하는 대기시간을 줄이기 위해 고안된 기법

보안과 보호

  • 보호(Protection) : 컴퓨터 시스템이 정의한 자원에 대해 프로그램,프로세스, 사용자들의 접근을 제어하는 기법
  • 보안(Security) : 내부 혹은 외부의 공격으로부터 시스템을 방어
  • 사용자별로 권한을 달리 주어 컴퓨터를 보호함

분산 시스템

  • 분산 시스템 : 물리적으로 떨어져 있는 컴퓨터들의 집합
  • 사용자가 시스템 내의 다양한 자원에 연결할 수 있도록 네트워크로 연결
  • 근거리 통신망(LAN), 광역 통신망(WAN), 도시권 통신망(MAN)

요약

  • 운영체제의 주요 3가지 목표 : 프로세스 관리, 환경 관리, 자원 관리
  • 컴퓨터의 4가지 요소 : 하드웨어, OS, 프로그램, 사용자
  • OS는 인터럽트를 통해 작동
  • 인터럽트는 하드웨어와 소프트웨어로부터 OS로 알리는 알림
  • 인터럽트는 인터럽트 서비스루틴에 제어를 넘김
  • 입출력은 장치와 로컬 버퍼 사이의 데이터 교환
  • 컴퓨터는 계층적인 저장장치를 지님
  • 레지스터, 캐시, 메모리, 2차 저장장치, 3차 저장장치
  • OS는 상호작용하는 계산을 위해 멀티태스킹 환경을 제공
  • OS는 이중모드를 통해 스스로를 지킴 : 사용자모드, 커널모드
profile
지금부터 공부하고 개발한것들을 꾸준하게 기록하자.

0개의 댓글

관련 채용 정보