TIL day-60

yo·2020년 8월 29일
0

김덕수님 운영체제 강의 (유튜브 HPR Lab.KOREATECH)

OS Overview

정의: 컴퓨터 하드웨어들을 (효율적으로) 관리하는 녀석.

컴퓨터 자원들을 효율적으로 관리해서 사용자에게 서비스를 제공함.
사용자가 컴퓨터를 쉽게 다룰 수 있게 해주는 인터페이스.
대부분 운영 체제 전공책을 보면 OS에 대한 정의를 엄밀하게 하지 않는다.
전공 서적이나 위키별로 운영 체제에 대한 정의는 조금씩 다 다른데, 컴퓨터 자원을 효율적으로 관리하기 위한 시스템, 공통된 소프트웨어 플랫폼, 컴퓨터 응용 프로그램 관리자 등으로 다양하다
An Operating System is a program that manages a computer's hardware
-윈도우, 유닉스, 리눅스 등등

컴퓨터 하드웨어

프로세서(Processor) 계산하는 녀석

-cpu
-그래픽카드(gpu)
-응용 전용 처리장치 등

메모리(Memory) 저장하는 녀석

-주 기억장치
-보조 기억장치

주변장치

-키보드/마우스
-모니터, 프린터
-네터워크 모뎀 등

프로세서에 대해 더 알아보자

-컴퓨터의 두뇌(중앙처리장치)
-연산 수행
-컴퓨터의 모든 장치의 동작 제어

레지스터(Register)

프로세서 내부에 있는 메모리
-프로세서가 사용할 데이터 저장
-컴퓨터에서 가장 빠른 메모리!

레지스터의 종류

-용도에 따른 분류 : 전용 레지스터, 범용 레지스터
-사용자가 정보 변경 가능 여부에 따른 분류: 사용자 가시 레지스터, 사용자 불가시 레지스터
-저장하는 정부의 종류에 따른 분류: 데이터/주소/상태 레지스터

프로그램 카운터, 명령어 레지스터, 누산기는 기본 교양으로 알고 있을 것.

운영체제와 프로세서

운영체제는 프로세서가 처리할 작업 할당 및 관리

-프로세스(Process)생성 및 관리
(프로세스=프로그램 정도로만 일단 알고있자)
(3장)

프로그램의 프로세서 사용 제어

-프로그램의 프로세서 사용 시간관리
-복수 프로그램간 사용 시간 조율 등
(4~5장)

메모리에 대해 더 알아보자

데이터를 저장하는 장치(기억장치)

-프로그램(os, 사용자sw 등), 사용자 데이터 등
-뭔가 저장한다 하면 다 메모리임

메모리의 종류

보조기억장치(HDD)
메인 메모리(DRAM)
캐시in CPU)

주기억장치(main memory)


프로세서가 직접 접근할 수 있는 메모리 중 용량 갖아 크고, 가격 가장 저렴
(보조기억장치까지는 프로세서가 도달 못함)

캐시(Cache)

-cpu내부의 메모리
-주기억장치와 같은이유로 생겨남(cpu와 저장장치의 속도차)

-캐시 메모리가 엄청 작은데, 제 기능을 할 수 있긴 한걸까?

캐시의 동작

지역성(Locality)

  1. 공간적 지역성(Spatial locality)
    -참조한 주소와 인접한 주소를 참조하는 특성
    예) 순차적 프로그램 수행
  2. 시간적 지역성(Temporal locality)
    -한 번 참조한 주소를 곧 다시 참조하는 특성
    예) for문 등 의 순환문

<결론>
지역성은 캐시 적중률(cache hit ratio)과 밀접.
알고리즘 성능 향상 위해 중요한 요소
비록 용량은 적지만, 위와 같은 이유로 제 역할이 가능.

보조기억 장치에 대해 더 알아보자

(Auxiliary memory/secondary memory/storage)
-프로그램과 데이터 저장
-용량 크고, 가격 저렴
-프로세서가 직접 접근할 수 없다->주기억장치를 거쳐 접근
질문: 만약 주기억장치 메모리는 8GB인데 실행하려는 프로그램이 20GB라면?
가상 메모리 활용(virtual memory)
가상메모리는 보조기억장치의 일부를 를 주기억장치처럼 활용(나중 강의에서 다룰 예정)

시스템 버스(System Bus)

자원(프로세서, 메인 메모리, 주변 장치 등)이 서로 신호를 주고받을 수 있는 통로
데이터 버스-테이터가 타는 버스, 주소 버스-주소가 타는 버스, 제어 버스-제어신호가 타는 버스

주변장치

컴퓨터가 계산할 때 꼭 있진 않아도 되는 것들.

장치 드라이버를 통해 os가 해당 주변장치를 제어할 수 있게 해줌

운영체제 개요

1. 운영체제의 역할

User Interface(편리성)

-CUI(Character user interface)
-GUI(Graphical User interface)
-EUCI(End-User Comfortable Interface)
특정 목적을 위해 만들어진 기계에 특화된 ui(예. mp3는 mp3만의 ui를 가진다, 그게 EUCI)

Recource management(효율성)

-HW resource(processor, memory, I/O devices, Etc.)
-SW resource(file, application, message, signal, Etc.)

Process and Thread management

process:실행의 주체, thread: 상대적으로 가벼운 process
이정도만 일단 이해하자.

System management(시스템 보호)

컴퓨터 시스템의 구성

-Kernel이 os의 핵심.
-사용자가 Kernel에 접근하는 통로가 System Call Interface(직접 kernel에 접근하진 못함)
-아래 그림에서 시스템 라이브러리가 SCI고, 그 아래가 커널

2. 운영체제의 구분

1)동시 사용자 수

-Single-user system (오늘 날 우리가 쓰는 개인용 노트북)
-Multi-user system

2)동시 실행 프로세스 수

-Single-tasking system
-Multi-tasking system(Multiprogramming system)

요즘은 single-tasking system 찾아보기 어렵다.

3) 작업 수행 방식(사용자가 느끼는 사용 환경)

-Batch processing system(일괄처리 시스템)
-Time-sharing system(시분할 시스템)
-Distributed processing system(분산처리 시스템)
-Real-time system(실시간 시스템)

3-1) 순차처리(No OS, ~1940s)

-운영체제 개념x
-사용자가 기게어로 직접 프로그램 작성
-실행하는 작업 별 순차 처리.
각각의 작업에 대한 준비 시간이 소요

예를들어 누구는 c, 누구는 자바, 누구는 python을 실행하기 원하면 각각에 맞게 컴퓨터를 다시 셋팅하는 시간이 필요했다.
그래서 나온게 batch system!

3-2) Batch Systems(1950s~1960s)

-모든 시스템을 중앙(전자계산소 등)에서 관리 및 운영
-요청 작업(천공카드 등)을 일정 시간 모아 두었다가 한 번에 처리
-시스템 지향적(System-oriented)
-장점:
1) 많은 사용자가 시스템 자원 공유
2) 처리 효율(throughput)향상
-단점:
1)생산성(productivity)저하.
같은 유형 작업들이 모이기를 기다려야 함->내 작업이 언제 끝날지 도통 알 수 없음
2)긴 응답시간(turnaround time)
약 6시간(작업 제출~결과출력 시간)

응답시간이 너무 긴 단점. 그래서 등장한 게 Time Sharing Systems

3-3) Time Sharing Systems(1960s~1970s)


여러 사용자가 자원을 동시에 사용
(요즘 시스템들도 다 이 형태를 띤다)
-os가 파일 시스템 및 가상 메모리 관리
(여러 사용자가 사용하니, 어떤게 누구 파일인지 정리할 필요성과(파일 시스템)메모리도 많이 필요하니 가상메모리 필요성 대두)
사용자 지향적(User-oriented)
-대화형(conversational, interactive)시스템
(작업 진전이 있을 때마다 단말기를 통해 보여줌)
-단말기(CRT terminal)사용

장점
-응답시간(response time)단축 (약 5초)
-생산성 향상(프로세서 유휴 시간 감소)

단점
-통신 비용 증가(통신선 비용, 보안 문제 등)
-개인 사용자 체감 속도 저하
동시 사용자 수 증가->시스템 부하 증가->느려짐(개인관점)

3-4) Personal Computing

-개인이 시스템 전체 독점
-CPU 활용률(utilization)이 고려의 대상이 아님
(이 전까지는 비싼 컴퓨터를 샀으니, 최대한 cpu를 가동해 뽕을 뽑는게 중요했음)
-os가 상대적으로 단순->하지만 다양한 사용자 지원 기능 있음

장점
빠른 응답시간

단점
(이전 컴퓨터들과 비교했을 때) 성능(performance)이 낮음

혼자 쓰다보니 성능이 낮다? -> 한 컴퓨터에 여러개의 프로세서를 사용하자!

3-5) Parallel Processing System

단일 시스템 내에 둘 이상의 프로세서 사용
메모리 등의 자원 공유(Tightly-coupled system)
사용목적
-성능 향상
-신뢰성 향상(하나가 고장나도 정상 동작 가능)
프로세서간 관계 및 역할 관리 필요

이 시스템은 확장성의 한계가 있다. 컴퓨터 한 대에 cpu 100개를 넣을 수는 없는 노릇이니.
그래서 등장한 게 Distributed Processing Systems. 아싸리 여러 컴퓨터를 묶어 버리는 거다.

3-6) Distributed Processing Systems

***네트워크를 기반으로 구축된 병렬처리 시스템(Loosely-coupled System)

-각각의 컴퓨터를 노드라 부르고, 중앙의 분산운영체제에서 이 노드들을 관리함
-물리적인 분산, 통신망 이용한 상호 연결
-각각 운영체제 탑재한 다수의 범용 시스템으로 구성
-사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능(은폐성, transparency)
-각 구성 요소들간의 독립성 유지, 공동작업 가능
-Cluster system, client-server system, P2P 등

장점
-자원 공유를 통한 높은 성능
-고신뢰성, 높은 확장성

단점
-구축 및 관리가 어려움

3-7) Real-time Systems

작업 처리에 deadline을 갖는 시스템(반드시 이 때 까진 되야해!)
<중요도>
제한 시간 내에 서비스를 제공하는 것 > 자원 활용 효율

작업의 종류
1.Hard real-time task
-시간 못지키면 큰 일 나는 것(발전소 제어, 무기 제어 등)

  1. Soft real-time task
    -큰일 안나는 것(동영상 재생)

  2. Non real-time task

3. 운영체제의 구조

커널(kernel)
-영어로 알맹이.
-커널을 제외한 부분이 유틸리티
-os의 핵심(메모리 상주)
-가장 빈번하게 사용되는 기능들(processor, memory 관리 등)
동의어:
핵(necleus), 관리자(supervisor)프로그램, 상주 프로그램(resident program), 제어 프로그램(control program) 등
유틸리티(Utility)
-비상주 프로그램
-UI 등 서비스 프로그램

사진에서 kernel, system calls, utilities가 os

단일 구조


장점
-커널 내 모듈간 직접 통신
-효율적 자원 관리 및 사용

단점
-커널의 거대화
-오류 및 버그, 추가 기능 구현 등 유지보수가 어려움
-동일 메모리에 모든 기능이 있어, 한 모듈의 문제가 전체 시스템에 영향(예, 악성 코드 등)

이 문제 때문에 기능별로 분류할 필요성이 생겼고, 그래서 등장한 게 계층 구조(기능별로 나누자!)

계층 구조

기능별로 나눈 것(모듈화)
현재 대부분의 운영체제가 이 형태

장점
-모듈화 (계층간 검증 및 수정 용의)
-설계 및 구현의 단순화

단점
단일구조 대비 성능 저하
원하는 기능 수행 위해 여러 계층을 거쳐야 함

마이크로 커널 구조

4. 운영체제의 기능

프로세스(process)관리
프로세서(processor)관리
메모리(memory)관리
파일관리
입출력(I/O)관리
보조 기억 장치 및 기타 주변장치 관리

process management

프로세스
-커널에 등록된 실행 단위(실행 중인 프로그램)

os의 process관리 기능
-생성/삭제, 상태관리
-자원할당
-프로세스 간 통신 및 동기화(sychronization)
-교착상태(deadlock)해결
*교착상태란 여러 프로세스들이 하나의 자원을 두고 싸움질 하는 것.

프로세스 정보 관리
PCB(Process Contrl block)

Processor Management

프로세서 =CPU 라고 일단 알아두자

중앙 처리 장치(CPU)
프로그램을 실행하는 핵심 자원
프로세스 스케줄링(Scheduling)
시스템 내의 프로세스 처리 순서 결정
프로세서 할당 관리
프로세스들에 대한 프로세서 할당(한 번에 하나의 프로세스만 사용 가능)

Memory Management

메모리 할당 및 회수
각 프로세스의 할당 메모리 영역 접근 보호

File management

말 그대로 파일 관리 ㅇㅇ
파일: 논리적 데이터 저장 단위

I/O Management

프로세서가 입출력 직접 접근할 수 없고 os통해 할 수 있음

그외

profile
Never stop asking why

0개의 댓글