| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 일급 객체
- Dependency Injection
- middleware
- Spring
- nestjs
- synchronized
- 일급 컬렉션
- Google OAuth
- java
- lombok
- OAuth 2.0
- builder
- factory
- spring security
- Volatile
- Today
- Total
목록OS (14)
HJW's IT Blog
1 File => 하나의 inode(index node) 를 가르킨다 inode list 1 open file table, 1 active inode table, many per-process file table #File System Issues > Important to user: >> Persistence: 데이터는 전원이 꺼지거나 시스템 충돌이 발생해도 유지된다 >> Easy to Use: 쉽게 찾고, 읽고, 변경이 가능하다 >> Efficiency: 디스크 공간을 효율적으로 사용 >> Speed: 데이터에 빠르게 접근 가능 >> Protection: 다른 사람이 데이터를 손상시키지 못하게 보호 > OS 는 다음 기능을 제공한다 >> Directory and Naming: 위치가 아닌 디렉토리 및..
Paging 이란? > 프로세스를 작은 고정크기의 partition을 나누는 것을 말한다 >> Physical Memory의 이 공간을은 frame 이라 부른다 >> Page size = frame size >> 전체 프로세스는 여전히 메모리에 로드되어 있다 >> 하지만 연속적일 필요는 없다 >> 가상 주소는 페이지 수와 페이지의 시작에 offset으로 구성된다. > Segmentation이랑 비교 했을 때 paging 은 >> 할당과 swapping 이 더 쉽다 >> No external fragmentation Paging 구현 > Page Table 은 특정 프로세스의 모든 페이지를 기록 >> 각 entry는 메인 메모리에 있는 알맞는 frame을 가지고 있다 >> Protection bit 을 가..
Segementation 기본 개념 > 프로세스를 메모리 내에서 여러 segement로 나눈다 > 각 segement는 분명한 목적이 존재: >> 예) code, static data, heap, stack >> Segement 는 다른 크기일 수 있다 > 전체 프로세스는 여전히 메모리에 로드 되어 있지만, 그 프로세스를 구성하는 segment들은 연속적으로 메로리에 올라가지 않아도 된다 > Segment는 protection bit 을 가진다 >> Read-only (code) >> Read-write (data, heap, stack) >> 프로세스들이 코드와 데이터를 공유할 수 있게 해준다. Segment Address > Segment의 가상 주소는 다음으로 이루어 진다 >> Segment Num..
> MMU는 주소공간을 보호하고, 가상 주소로 변환한다(Translation) >> Base register는 프로세스의 최하위 가상 주소를 가지고 있다 (loader가 정함) >> Limit register는 프로세스의 최상위 가상 주소를 가지고 있다 (compiler가 정함) >> Translation 이란? >>> Physical addr = Virtual addr + base reg >> Protection 이란? >>> if (virtual addr > limit) ~>address exception으로 OS에 가두어 둔다 Dynamic Relocation - OS vs. User Programs > User program(aka. process) 는 각자의 가상 메모리를 가진다 >> Reloc..
메모리에 저장되는 정보 분류 1. 프로그램 내에 역할에 따라 >> Program Instructors >> Constants >> Variables 2. 보호 상태에 따라 >> Readable and Writables: variable >> Read-Only: Code, constants >> Data 와 Code 공유에 중요 3. Binding Time ( 언제 공간이 할당 되는가?) >> Static: 프로그램이 실행 되기 전 - 코드, 전역변수 등... >> Dynamic: 프로그램 실행 도중 - 스텍, Dynamic storage 등... Uniprogrammed System 에서의 Memory Management > OS 는 정해진 크기의 메모리를 가진다 > 한번에 하나의 프로세스만 single..
Deadlock Avoidance: Motivation > '///' 와 '\\\'는 두 프로세스가 동시에 IO를 접근함 > 모든 path는 위 혹은 오른쪽 > 'Unsafe' : OS 가 이 box에 들어오게 되면, 결국 deadlock이 발생함으로 들어가선 안된다. > state t 일때, unsafe 한 공간은 피해야 한다(위가 아닌 오른쪽으로 감으로써) > State t 일때, OS는 request를 허락할 지 정해야 한다 > Good choice: Avoid Deadlock > 이를 수행하기 위해선, 미리 어떤 자원들이 필요할 지 알아야 한다. Deadlock Avoidance: Safe and Unsafe States > (a) 는 safe 한 상태: 할당되는 순서가 deadlock 없이 모든..
Synchronization Terminology Synchronization(동기화): Use Atomic Operation, 실행순서를 세세하게 조정하여 두 스레드가 상호작용함에 있어서 공유자원에 대한 접근을 조절, 데이터의 일관성을 보장 Mutual Exclusion(상호배제): Only one thread at a time, 동시에 공유자원에 접근하는것을 막기 위한 기법, 한번에 하나의 스레드만 공유자원에 접근하는것을 허용 Critical Section(임계영역): Part of code that modifies shared data, 공유자원에 접근하는 코드의 영역으로 한번에 한 스레드만 실행 Lock(락): Prevent other thread from doing something, 상호배제를..
프로세스란 OS 로 부터 자원을 할당받아 실행되는 독립적인 실행단위이다. 각각의 프로세스는 독립적인 메모리 영역을 가지며, 프로세스 간에는 메모리를 공유하지 않는다. 스레드는 프로세스 내에서 실행되는 실행단위이다. 각각의 스레드는 프로세스 내의 메모리를 공유한다. 즉, 프로세스는 독립적인 실행 단위, 스레드는 하나의 프로세스 내에서 실행되는 단위 이다. 프로세스는 다음으로 구성된다. Address Space Program Code Global variable, heap, stack OS resources 쓰레드는 다음을 공유한다. Address Space, Program Code Global variables, heap OS resources 각각의 쓰레드는 다음을 가지고 있다 Register, Prog..
Cooperating Process란? Cooperating Process(협력 프로세스)란 여러개의 프로세스가 서로 상호자용하여 동시에 실행되는 경우를 말한다. 협력 프로세스는 여러 자원을 서로 공유하게 되며 서로 접근하고 수정할 수 있게 된다. 파일, 데이터베이스, 공유 메모리 등등 여러 프로세스가 공유자원을 동시에 사용하게 될 때, concurrency problem(동시성 문제) 가 발생하게 된다. 이러한 문제를 해결하기 위해 critical section을 한 프로세스가 사용중일때, 다른 프로세스가 사용하지 못하도록 하는 SW적 알고리즘이 필요하다. 장점 Cooperating process는 여러개의 컴퓨터, 네트워크에 분산되어 실행 될 수 있다. 즉, 작업의 처리 속도를 높일 수 있다 Coop..
Context Switching Context Switching 이란 CPU를 할당 받고 있던 프로세스 하나를 멈추고 다른 프로세스를 시작하는 것이다. Context Switching 은 다음 상황에서 발생한다 Priority Inversion(Process Scheduling) Interrupt Multitasking Context Switching 이 일어날때, HW register들은 나중에 복구를 위해 모두 저장된다 Scheduler 종류 Long-Term(Job Scheduler) Job들 중 하나를 골라 memory에 load Process가 CPU를 떠날때만 실행된다 Executes Infrequently 요즘 컴퓨터는 잘 쓰지 않음 Medium-Term 시분할 시스템에선 long-term ..