/////
Search
📝

3월14일(목)

Direct Memory Access Structure

파일(대용량)을 읽을 경우
CPU 높은 오버헤드
메모리 직접 접근(CPU 안 거침)
블록 단위로 전송 마친 후 인터럽트
CPU 활용 효율 증가

Computer-System Architecture

대부분 → Single processor(general-purpose)
요새 → Multiprocessors
Parallel systems, tightly-coupled systems
장점
출력량 증가(비례는 X)
경제성 증가
신뢰성 증가
타입
Asymmetric Multiprocessing(비대칭)
각 프로세스들의 담당 업무가 특정 업무들로 나눠짐
Symmetric Multiprocessing(대칭)
각 프로세스들이 업무들을 함께 수행

NUMA

두 가지 경우를 비교해서 살펴보세요

CPU추가

성능 향상 가능
자원에 대한 경합으로 인한 성능 저하 발생
각 CPU 별 local memory 제공

NUMA

CPU들공유 시스템으로 연결
하나의 물리주소 공간 공유
지역별 메모리에 따른 접근시간 다름
Local memory 사용시 경합X
확장성
CPU 스케쥴링

Clustered Systems

멀티프로세서 시스템과 유사하긴 한데, 다수의 시스템이 함께 작동됩니다
스토리지를, SAN(Storage Area Network)를 통해 공유
high-availability
Asymmetric clustering
Symmetric clustering
Application들은 병행성(parallezation)을 사용해야만 합니다
충돌을 피하기 위해, DLM(Distributed Lock Manager)를 지니고 있습니다

OS(Operating System) Operations

Bootstrap program
시스템을 간단한 코드를 통해 구동시킴
Kernel을 Load
부팅, 재부팅
Kernel Loads
System Daedoms 시작
커널 외부에서 제공되는 서비스
커널 인터럽트

Multiprogramming & Multitasking

Single Process

한 프로그램만 실행
다른 프로그램 실행을 위해 현재 프로그램 종료
자원 활용 효율 나쁨
I/O 발생 시, 현재 프로그램 중단
I/O : 읽기, 쓰기, 네트워크 상의 데이터 교환, 입출력장치와의 데이터 교환 등등…

Multiprogramming(Batch System)

Job(업무) Scheduling : 특정한 업무가 선택되어 수행되는 것
여러 개의 프로그램 동시 실행
I/O등의 인터럽트 발생시, 다른 프로그램 실행

Multitasking

Context Switching
Timesharing
Local extension : CPU가 빠르게 업무를 전환하면서 interactive computing 진행
반응 시간은 1초 아래여야함
빠른 전환
CPU scheduling : 동시에 여러 업무를 수행할 준비가 된 경우
Virtual memory : 프로세스 수행이 메모리를 완전 허용되지 않도록 함
한 놈이 이리 갔다 저리 갔다(swapping) 업무 처리를 진행
당연히 전환 속도가 빨라야 함

Multiprocessing

Core가 여러개

Multiprocess

Process를 여러 개로 나눠서 작업

Memory Layout for Multiprogrammed System

Dual mode & Multimode Operation

Dual mode

Dual mode operation은 OS가 자기 자신과 다른 시스템을 보호할 수 있도록 함
User mode
웬만하면 유저 모드를 사용
Kernel mode
직접적으로 시스템을 건드리는 일은 잘 없으므로 잘 사용되는 모드X
Mode bit
provided by hardware
시스템이 UserMode, KernelMode 중 어떤 것을 실행 중인지 구분할 능력을 줌

System call / Trap / Timer

System call

User mode(User process)가 OS에게 작업을 요청하는 수단

Trap

Interrupt의 한 종류
User Process가 적법하지 않은 HardWare를 실행할 경우 발생

Timer

너무 시간을 오래끄는 경우, OS가 사용 중이던 리소스를 다른 application(program)에게 해당 자원을 할당

Transition from User to Kernel mode

웬만한 경우엔 OS가 어느 process로 가라고 안내를 하지만, 어쩌다 안내를 따라 가더라도 무한루프를 도는 경우가 생기기도 함 → 각 처리(process)들마다 타이머를 걸고, 무한루프에 빠지는 경우엔 해당 처리를 없애버리고, OS가 다른 처리업무에게 자원을 할당해주고 안내한다.

Process Mangement

Process는 실행중인 프로그램
Program : Passive Entity | Process : Active Entity
OS가 CPU, 메모리, 입출력, 파일들, 데이터 등등의 자원들을 관리하는 역할

Process Management Activities

Deadlock
두 처리가 기다리고 정작 쓸 자원을 두 process 모두 사용하고 있지 않는 상태인 경우

Memory Management

알다시피, 명령어들과 데이터들은 메모리에 존재한다
메모리 관리는, 메모리에 무엇이, 언제 들어있는지 결정
CPU 활용을 최적화하고, 유저에게 응답
메모리에 여러 개의 프로그램 유지가 필요

메모리 관리 활동

메모리에 어떤 부분이 현재 사용중이고 어떤 프로그램에 의해 사용되고 있는지 추적
어떤 프로세스와 데이터가 메모리로 이동하고 메모리에서 삭제되어야하는지 결정
메모리 공간을 필요에 따라 할당하거나 해제

File-system Management

파일도 OS가 관리한다
일관되게 정리를 해놔야 파일을 신속하게 정확하게 로드할 수 있기에 파일 관리도 담당한다
OS마다 처리방식에 차이가 있음
디렉토리도 일종의 파일이다

Mass Storage Management

대용량도 OS가 관리한다!

Caching

메인메모리보다 캐시에 있는게 접근속도가 빠르기에, 캐싱도 담당합니다

Characteristics of Various Types of Storage

Protection & Security

보호

접근 권한

보안

해킹 방어같은 것

Distributed Systems(분산 시스템)

Network통신 path(수단?) TCP/IPLAN(Local Area Network), WAN(Wide Area Network), MAN(Metropolitan Area Network), PAN(Personal Area Network)
Network OS는 네트워크 상에서의 시스템들 사이에서 기능을 제공하는 역할
Communication Scheme : 시스템이 메시지를 서로 교환할 수 있도록 해줌
Single System의 환상(Illusion)이다

Kernel Data Structures

표준 프로그래밍 데이터 구조와 유사
Singly Linked List
Doubly Linked List
Circular Linked List
Binary Serach Tree
Left ≤ Right
O(n)
Balanced Binart Search Tree : O(log n)
Hash Function
Hash Map
Bitmap
여기서부터 2장 내용

운영체제 역할

1.
User Interface
GUI(WIndows), CUI(Linux) 등등
2.
컴퓨터 자원 관리
a.
하드웨어 관리 : 프로세서, 메모리, 입출력 장치 등
b.
소프트웨어 관리 : 파일, 응용프로그램, 메세지, 신호 등
3.
프로세스 및 스레드 관리
4.
시스템 보호

Architecture of OS

Kernel

사용자 직접 접근 X
운영체제의 핵심
필요한 기능 있을 시 → OS에게 사용자가 요청하는 통로

자원관리

주기억장치 관리

프로세서가 직접 주소 지정할 수 있는 메모리
메모리의 어느 부분을 사용할지 점검
현재 누가 사용중인지 점검
메모리에 저장할 프로세스 결정
메모리 할당 및 회수 방법 결정 : 고정or가변 할당

보조기억장치 관리

빈 여유공간 관리
새로운 파일 저장할 장소 할당
메모리 접근 요청 스케쥴링
파일 생성 및 삭제

프로세스 관리

프로세스 | 실행중인 프로그램
프로그램은 실행하려면(프로세스를 하려면) 자원할당은 필수적으로 필요

주변장치 관리

입출력장치
OS는 I/O 기기와 상호작용
임시저장 기능 제공
장치용 드라이버 인터페이스 제공

파일 관리

파일 관리시, 단일화 제공이 매우 중요하다
위치, 저장, 검색 관리
단일화된 저장 형태 제공(효율성을 위해)
다수의 사용자 접근 제어
디렉토리 생성 및 삭제

시스템 관리

시스템 보호 및 네트워킹

Operating System Services

한 묶음의 OS(운영체제)는 유저에게 도움이 되는 기능을 제공 : UI마저도 OS를 거쳐서 동작하는 것이다
User Interface(UI)
CLI, GUI, 터치스크린, Batch, 입출력 지시, 메뉴 선택, 화면 선택, 문자열 입력 등
Program 실행
I/O 명령어
File-System Manipulation
Communications
Error Detection
Resource Allocation
Logging
어떤 유저가 얼마나 사용하고 어떤 자원을 사용하는지 트래킹
Protection & Security
A view of OS services

입출력 연산

각 입출력 장치들의 특성별로 다른 속도, 기능들을 커널이 적절히 조절해서 연결시켜줘야함
인터페이스 표준화 중요 → OS별로 표준화를 시켜놓았다

입출력 연산 방식

Polling
장치가 현재 사용중(busy)인지 검사
Interrupt
인터럽트 라인을 CPU가 매번 검사
동시에 들어오면 우선순위 설정 : 스케쥴링
에러 등의 이벤트 처리 및 중단 이벤트 처리
DMA(Direct Memory Access)
입출력 장치와 컴퓨터 사이의 데이터 교환

CLI - User OS(Operating System) Interface

CLI 또는 Command Interpreter라고 불림
OS가 할 일을 사용자가 직접 입력
때로는 커널 내에서 구현되고, 어떨 때는 시스템 프로그램에 의해 구현됨
shells : 다수의 방식으로 구현됨
유저로부터 커멘드(명령어)를 받아오고 실행함

Kernel & Shell

OS = Kernel + Shell
사용자가 실행 → 이 받아주고(커널의 껍데기) → 커널이 일처리 → 하드웨어와 통신

Shell 기능

사용자가 터미널에서 입력한 명령을 해석하고 관리하여, 사용자와 커널 사이를 연결하는 역할
명령어 해석
명령어를 기계어로 해석하고 번역 → 커널에 전달 → 커널이 수행한 결과를 사용자에게 번역 후 제공
프로그래밍 기능
Shell Script 작성 후, 하나의 프로그램으로 작성 가능
사용자 환경설정 기능
파일의 권한 설정, 명령어를 찾아오는 경로 설정 등등,,

GUI

OS별로 차이가 존재한다

CLI vs GUI

Unix : CLI
MacOS, Linux도 GUI 지원
MS Windows이후, GUI 표준 생김
CLI는 자동화, 자원 사용이 적어서 서버쪽에서 많이 사용
그치만 공부해야하는 명령어가 많아서, 공부가 필요하다(단점이라고 하긴 뭐함)
또한, 직관적이진 않음