| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- Prisma
- Delete
- Binary Lifting
- 그래프 탐색
- ccw 알고리즘
- Github
- 벨만-포드
- 강한 연결 요소
- 비트필드를 이용한 dp
- Overlapped Model
- 트라이
- 이분 탐색
- HTTP
- 최소 공통 조상
- DP
- JavaScript
- PROJECT
- trie
- SCC
- Lock-free Stack
- 게임 서버 아키텍처
- reference counting
- 비트마스킹
- 2-SAT
- map
- select 모델
- Spin Lock
- Strongly Connected Component
- 자바스크립트
- Behavior Design Pattern
- Today
- Total
목록Operating System (13)
dh_0e
File Concept파일(File): Byte들의 배열(Array of Bytes)로 정의되며, 관련 정보들의 집합(A Collection of Related Information)으로도 정의추상화된 파일 객체를 다룸 File SystemFile과 Physical Disk Block 간의 Mapping을 제공하며, Disk 위치 배치를 담당File Blocks >> Disk Blocks독립성(Independence): 사용자는 File이 저장된 물리적 위치를 알 필요 없음Disk에 저장된 전체 File들을 총칭하며, File System 종류에 따라 File들의 배치나 구성이 달라질 수 있음이 외에 Time(수정된 시각), Data(수정된 날짜), User Information, etc ..Curren..
Page ReplacementMemory 과다 할당 상태 (Over Allocation of Memory)발생 원인: Multi Programming System에서 메모리 내 사용자 프로세스 수가 증가함에 따라 발생개인 PC같은 메모리가 크지 않은 상황에서 흔히 발생상황: 모든 User Process가 사용하는 Page 수보다 물리 메모리의 Frame 수가 적은 상황해결 방법: Page Fault 처리에 Page Replacement를 추가하여 해결 Page Replacement물리 메모리에 위치한 Page를 Disk(보조 저장 장치)에 저장하고 (Page Out), 요구된 Page가 해당 Frame을 할당받도록 하는 방법 (Page In)과정디스크에서 요구된 Page의 위치를 찾는다.물리 메모리에서 ..
범용 컴퓨터 시스템의 목적CPU의 활용률(Utilization)을 극대화사용자에게 빠른 응답을 제공보다 많은 Progam을 Memory에 올려서 실행(Multi-Programming)여러 Program을 동시에 실행시키기 위한 Scheduling 기법 등장Memory 관리의 필요성 등장여러 Program이 동시에 Memory에 적재되어 실행되면서, Memory를 공유할 필요가 생김Computer의 Memory는 한정된 자원실행하는 Program이 많아지면 Memory 요구량이 증가 주소 공간(Address Space)정의: 프로세스가 참조할 수 있는 주소들의 범위 또는 집합특징프로세스와 1:1 관계를 가짐사용자 스레드(thread)는 이 주소 공간을 공유함주소 공간의 크기: CPU의 주소 버스(Addre..
동기화의 고전 문제 3가지Bounded-Buffer Problem Readers and Wrtiers ProblemDining Philosophers Problem Bounded-Buffer Problem (생상자-소비자 문제)N개의 Item을 저장할 수 있는 버퍼(Buffer)에 여러 생산자(Producer)와 소비자(Consumer)가 접근생산자(Producer): 하나의 Item을 생산해 Buffer에 저장Race Condition공유 데이터에 대해 여러 Process가 동시에 접근, 변경을 시도하는 상황= 한 Buffer에 대해 여러 Producer가 동시에 item을 추가하려는 상황 소비자(Consumer): Buffer에서 하나의 Item을 가져옴동작 조건: Buffer의 상태가 Empty면 ..
Race Condition(경쟁 상태)공유 가능한 자원: 스레드 간에 공유되지 않는 지역 변수와 달리 전역 변수와 동적 할당 객체는 여러 스레드가 접근할 수 있음Race condition: 여러 프로세스(또는 스레드)가 공유 데이터에 동시에 접근하고 변경을 시도하여, 프로그램 결과가 실행 타이밍에 따라 달라지는 비결정적인(non-deterministic) 상태를 의미데이터의 일관성을 해치는 결과를 초래동기화를 걸지 않는 이상 해결이 불가능ex) 은행 입출금 문제잔고가 1000원인 계좌에 500원 입금과 500원 출금이 동시에 발생할 경우, 최종 잔고는 스케줄링 순서에 따라 500원 또는 1500원이 될 수 있음 Critical Section(임계 영역)여러 프로세스가 공유 데이터에 접근하고 변경하는 코드..
Process 복습Process는 시스템에서 다음과 같은 추상화 단위를 나타냄Execution Unit(실행 단위): 스케줄링의 기본 단위Protection Domain(보호 영역): 소유하고 있는 자원에 대한 보호를 제공Program과의 관계기존의 프로세스 개념은 단일 실행흐름(single thread of control)을 가진 채 실행 중인 프로그램을 의미"만약 1개의 실행 흐름을 여러 개로 만든다면?" 스레드 등장의 배경이 됨 Thread정의Execution Unit: Process 내의 실행 흐름Finer Grain(더 작은 단위): Process보다 더 작은 실행 단위linux에선 light-weight process(LWP)라 명명하고 사용Process가 제공하는 Protection Do..
IPC(Inter Process Communication)Process들 간에 데이터 및 정보를 주고받기 위한 MechanismKernel에서 Process에게 System Call 형태로 IPC 도구를 제공필요성Process 협력 모델(Cooperating Process Model)을 구현하기 위해 IPC가 반드시 필요함ex) DBMS협력하는 프로세스는 실행 중인 다른 프로세스의 영향을 받음 IPC의 두 가지 모델1. Shared MemoryProcess의 특정 메모리 영역을 공유하여 통신하는 방식원리: 공유한 Memory 영역에 읽기/쓰기를 통해서 통신을 수행특징응용 프로그램 level에서 통신 기능을 제공공유 메모리가 설정되면, 그 이후의 통신은 Kernel의 관여 없이 진행이 가능해짐ex) 데이터..
CPU Scheduling어떻게 Process에게 CPU의 사용을 할당할 것인가Multiprogramming에 기반함 - Memory 내의 실행 준비된(Ready State)의 Process들(in Ready Queue) 가운데 하나에게 CPU를 할당Multiprogramming: 컴퓨터가 여러 프로그램을 동시에 실행하는 것처럼 보이게 하는 기술목표: CPU 사용률과 처리량(Throughput)의 최대화 CPU, I/O Burst CycleCPU Burst: CPU로 연산을 수행하는 시간I/O Burst: I/O 처리를 위해 기다리는 시간일반적인 프로세스는 두 Burst를 번갈아 가며 수행함Process 분류에 따른 CPU Burst의 특징CPU-Bound(Intensive: 집중적인) Process: ..
Computer Architecture(컴퓨터 구조)단일 Bus 구조Bus: CPU, RAM, I/O 장치 간 데이터가 전송되는 통로Data 버스, Address 버스단일 Bus: 하나의 시스템 버스에 여러 가지 모듈이 연결CPU, Memory, I/O의 속도가 비슷했던 초창기에 발생속도 격차가 증가(CPU > memory >>> I/O) → 병목 현상 발생병목 현상: CPU가 쉬는 시간ex) CPU는 초당 5단위의 일 처리, 메모리 초당 3 단위의 일 처리를 할 수 있다면 전체 시스템 속도는 메모리의 속도(3)로 제한됨 계층적 버스 구조병목현상을 해결하기 위해 시스템 버스를 여러 개의 세분화된 버스로 나누는 방식 채용CPU Local Bus, Memory Bus, PCI Bus, etc.이중 버스 구..
Scope of OS(운영체제의 범위)프로세스 관리(Process Management)메모리 관리(Memory Management)파일 관리(File Management)I/O 시스템 관리(I/O System Management)네트워킹(Networking)보안(Security) 컴파일러(Compiler)역할사람이 이해할 수 있는 프로그래밍 언어로 작성된 Source Code를 컴퓨터(CPU)가 이해할 수 있는 기계어로 표현된 Object 파일로 변환x86 vs ARM vs RISC-V 등 다양한 명령어 셋에 따라 Object 파일의 형태가 달라질 수 있음Object file: 컴퓨터가 이해할 수 있는 기계어로 구성된 파일자체로는 수행이 이루어지지 못함프로세스로 변환되기 위한 정보가 삽입되어야 함 (헤더..
System Structure(시스템 구조)운영체제는 규모가 크고 복잡한 소프트웨어이므로 설계 시 구조를 신중히 고려해야 함잘 설계된 운영체제는 개발, 수정 및 디버깅, 유지 보수, 확장을 용이하게 함좋은 디자인 목표는 설계하고자 하는 시스템의 목적(고객의 요구사항)과 밀접하게 관련되어 있음 OS Design Principle(OS 설계 원칙)운영체제 설계는 Mechanism과 Policy의 분리를 통해 모듈화를 달성Policy(정책): 무엇을 할 것인가(What will be done)에 대한 상위 수준의 결정목표나 방향을 정하는 것과 같음 (중요한 프로그램이 먼저 CPU를 사용 같은 결정들)Mechanism(매커니즘): 어떻게 할 것인가(How to do something)를 다루는 구체적인 방법구체..
컴퓨터의 기원compute + er2차 세계대전 당시 OS가 없던 시절 전쟁과 함께 개발됨암호 해석미사일 탄도 분석물리 계산 1950년대 초반현재의 컴퓨터에 비해 매우 원시적임프로그램인 기계적인 스위치를 이용하여, 1bit 단위로 컴퓨터에 입력되어 실행진공관 기반의 거대한 크기, 많은 열 방출1950년대 중반모든 프로그램이 기계어로 쓰임플러그 보드(Plug-Board: 빵판)에 와이어링(Wiring)을 통해 컴퓨터의 기능을 제어프로그래밍 언어 및 운영체제라는 존재가 없음영구적인 저장장치가 없어 매번 프로그램을 다시 입력함1960년대 초반펀치카드가 등장하며 프로그래밍한 카드로 컴퓨터를 구동시킴빵판의 대체재가 됨 Mainframe - 일괄처리(Batch)Business Machinery로써 쓰이면서 가치가 ..
프로그램을 실행하면 일어나는 일프로세서(CPU)가 메모리에서 명령어를 fetch함fetch: CPU가 다음에 실행할 명령어를 메모리에서 가져오는(읽어오는) 과정을 의미해당 명령어가 무슨 의미를 가지는지 decode(해석)함명령어에 적혀있는 Opcode 및 Operands(피연산자)를 기반으로 execute(실행)함Opcode: 연산자 / 명령어가 실행할 연산의 종류ex) 데이터 전송(MOV, POP, ..), 산술 연산(ADD, SUB, ..), 논리/비트 연산(AND, OR, ...), 제어 흐름(JMP, JE, ..), etc.프로세서는 다음 명령어 (PC+4)로 이동하여 동일한 수행 반복다음 명령어가 PC+4인 이유: MIPS 아키텍처에서 사용하는 기준인 고정 길이 명령어 구조에선 한 개의 명령어는..
