일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운영체제
- design pattern
- redis
- JavaScript
- mongoDB
- IT
- 디자인 패턴
- 네트워크
- MSA
- 알고리즘
- react
- Spring
- C
- Java
- Proxy
- c언어
- Data Structure
- 컴퓨터구조
- 백준
- OS
- MySQL
- 자료구조
- Kafka
- spring webflux
- 자바
- Algorithm
- 파이썬
- Heap
- Galera Cluster
- JPA
- Today
- Total
목록OS (18)
시냅스
파일 시스템 구조, File-System Structure 파일시스템은 쉽게 데이터를 저장하고, 찾고 인출할 수 있게 함으로써 저장장치를 더욱 효율적이고 편리하게 사용 고려해야 할 것 사용자에게 어떻게 보여야 할지 파일은 무엇인지, 그 속성 디렉터리 구조 파일에 허용되는 연산 각 층은 낮은 층의 기능을 사용하여 새로운 기능을 만들어 상위층에게 제공한다. 입/출력 제어 층은 장치 드라이버 루틴들과 인터럽트 핸들러로 이루어져 있어서 메모리와 디스크 시스템 간의 정보 전송을 담당한다. 기본 파일 시스템 층은 적절한 장치 드라이버에게 저장장치상의 블록을 읽고 쓰도록 일반적인 명령을 내리는 층이다. 파일-구성 모듈 층은 파일과 상응하는 논리 블록을 알고 있다. 논리 파일 시스템 층은 메타데이터 정보를 관리한다. ..
파일 시스템 인터페이스, File-System Interface 파일 시스템은 정보를 저장한 실제적인 파일의 집합체와 시스템 내의 모든 파일에 관한 정보를 제공하는 디렉터리 구조로 구성된다. storage에 logical하게 data를 쓴 것! 파일 연산 파일을 정의하기 위해 OS는 아래의 시스템 콜을 제공한다. 아래는 파일 조작을 위한 최소 연산이다. 파일 생성 : 공간 확보 -> 디렉터리에 포함 파일 열기 : open() 사용 -> fd... 파일 쓰기 : 쓰기가 일어날 위치를 가리키는 쓰기 포인터를 유지해야 한다, 쓰기가 일어날 때마다 갱신된다. 파일 읽기 : 순차적 읽기를 위한 읽기 포인터 유지 및 갱신, 프로세스는 하나의 현재 파일 위치 포인터(ftell)을 가진다. 파일 위치 재설정 : fse..
입출력 시스템, I/O System Web, File 수정, Youtube 시청, game 등 컴퓨터는 입출력 작업을 주로 한다. PCI 버스로 모든 Device 와 연결한다. 메모리 맵드 입출력 Memory-mapped I/O 모든 컨트롤러는 레지스터(제어용 또는 데이터용)를 가지고 있고, 레지스터를 프로세서의 주소 공간으로 사상한다. CPU는 물리 메모리에 사상된 장치-제어 레지스터를 읽고 쓸 때 표준 데이터 전송 명령을 사용함으로써 입출력 요청을 수행하게 된다. 입출력 장치 컨트롤러는 보통 4개의 레지스터로 구성되어 있다. 입력 레지스터 : 입력을 얻기 위해 읽기를 수행한다. 출력 레지스터 : 출력하기 위해 쓰기를 수행한다. 상태 레지스터 : 현재 명령이 완료되었는지, 입력 레지스터로부터 한 바이트..
대용량 저장장치 구조, Mass-Storage Structure 비휘발성인 보조 저장장치 Secondary Storage system HDD, SSD, NVM, magnetic tapes... 메인메모리에 프로그램을 전부 올릴 수 없기 때문에 사용한다. HDD Scheduling 접근 시간이나 탐색 시간을 최소화한다. 탐색 시간 : 어떤 device의 arm이 head를 움직이는데 특정 cylinder의 특정 sector를 찾는 것 대역폭을 최대화한다. 대역폭 : 전송된 총 바이트 수 / 첫 서비스 요청 시간 - 마지막 전송 완료 시간 (완료시간 - 요청시간) FIFO Scheduling 온대로 받는다. SCAN Scheduling 진행 방향이 맞는 순서로 처리한다. Elevator Algorithm C..
Chapter 10 Virtual Memory 물리 메모리와 논리 메모리를 완전히 분리하여 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법이다. 가상 메모리를 정의하고 그 이점을 설명한다. 요구 페이징을 사용하여 페이지가 메모리에 적재되는 방법을 설명한다. 페이지 교체 알고리즘에 대해 알아본다. 프로세스의 작업 집합과 프로그램 지역성에 대해 알아본다. 10.1 배경 Background 프로세스 전체가 메모리에 올라와 있다면 항상 메모리에 올라와 있지 않아도 되는 오류 처리 코드, 필요 이상으로 많은 공간을 점유하는 자료구조, 옵션이나 자주 사용되지 않는 기능 등 또한 상주하게 된다. 만일 프로그램을 일부분만 메모리에 올려놓고 실행할 수 있다면, 프로그램은 물리 메모리 크기에 제..
교착상태, Deadlock 어떤 집합 내 모든 프로세스들이 모두 Wait Queue에서 빠져나가지 못하는 상태 다시 말해, 모두 대기하고 CPU를 할당받지 않음 시스템 모델 System Model 시스템은 경쟁하는 스레드들 사이에 분배돼야 할 유한한 수의 자원으로 구성 e.g. CPU가 4개면, 4개의 인스턴스를 가진다. Mutex, semaphore 또한 시스템 자원 프로세스의 자원 사용 순서 요청 : 스레드 -> 자원 요청 (자원을 받을 때까지 대기) 사용 : 자원에 대해 작업 수행 방출 : 스레드가 자원 방출 라이브락 Livelock 또 다른 형태의 라이브니스 장애 교착상태가 같은 스레드 집합 내부에서 같은 집합에 속한 다른 스레드에서만 발생하는 이벤트를 기다리며 봉쇄되는 반면, 라이브락은 스레드가..
뮤텍스 락 Mutex Locks 고급 언어에서 개발한 도구 동기화를 위한 가장 간단한 도구 2개만 가능하다. acquire()을 통해 ciritical section에 진입 허가를 받는다. (원자적 연산) release()를 통해 허가를 반납한다. (원자적 연산) busy waiting -> 무한 루프를 돌면서 프로세스는 낭비된다. spin lock (= busy waiting) core가 여러개 일 때는 busy waiting(= spin lock)은 유용할 수 있다. core 위에서 돌아가고 있어 context switch를 줄여준다. 세마포어 Semaphores 정수 variable binary semaphore -> mutex lock 과 비슷하다. counting semaphore -> 제한 없..
프로세스 동기화 Process Synchronization Cooperation process 서로 영향을 주는 process thread를 공유하거나, shared memory massage passing 위의 경우 데이터 일관성에 유의해야 한다 => 실행 순서를 보장해야 한다. (Integrity of Data) producer - consumer problem while(true) { /* produce an item in next_produced */ while (count == BUFFER_SIZE) ; /* do nothing */ buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; count++; } while(true) { while (co..
실시간 CPU 스케줄링 Real-Time CPU Scheduling real time : 주어진 시간 내에 task 완료 연성(soft) 실시간 vs 경성(hard) 실시간 연성 실시간 soft real time 크리티컬한 process를 실시간 처리 완료를 보장하지 않는다. 하지만 처리시간은 nonciritical process 보단 짧다. 경성 실시간 hard real time deadline 시간을 꼭 지킨다. -> priority-base 지연시간 최소화 Minimizing Latency 이벤트 지연시간 : 이벤트가 발생해서 그에 맞는 서비스가 수행될 때까지의 시간 인터럽트 지연시간 인터럽트가 발생한 시점부터 해당 인터럽트 처리 루틴이 시작하기까지의 시간 현재 수행중인 PCB를 저장하기 까지의 시..
다중 처리기 스케줄링 Muliple-Processor Scheduling 여러 스레드가 병렬로 실행되어 부하 공유(load sharing)이 가능하다. 그러나, 스케줄링 문제는 그에 상응하여 더욱 복잡해진다. 다중 처리기 스케줄링에 대한 접근 방법 Approach to Multiple-Processor Scheduling 비대칭 다중 처리 : 하나의 처리기가 마스터 서버로 모든 스케줄링 결정과 I/O 처리, 다른 시스템의 활동을 취급하게 하는 것 단점은 마스터 서버가 전체 시스템 성능을 저하할 수 있는 병목이 된다는 점이다. 대칭 다중 처리 (SMP) : 표준 방법으로, 각 프로세스가 스스로 스케줄링을 할 수 있다. 모든 스레드가 공통 준비 큐에 있을 수 있다. 경쟁 조건으로부터 공통 Ready Queu..