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/IP는 LAN(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는 자동화, 자원 사용이 적어서 서버쪽에서 많이 사용
그치만 공부해야하는 명령어가 많아서, 공부가 필요하다(단점이라고 하긴 뭐함)
또한, 직관적이진 않음









