일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- 파이썬
- Proxy
- 네트워크
- redis
- 운영체제
- IT
- design pattern
- MySQL
- MSA
- C
- c언어
- Algorithm
- Galera Cluster
- spring webflux
- JavaScript
- Data Structure
- 백준
- 디자인 패턴
- JPA
- react
- mongoDB
- Java
- Spring
- OS
- 컴퓨터구조
- 자료구조
- 알고리즘
- Heap
- Kafka
- Today
- Total
목록운영체제 (14)
시냅스
파일 시스템 구조, 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..
페이징과 스와핑 페이징 Paging 프로세스가 할당되는 물리 메모리를 frame(고정된 크기 block)으로 쪼갬 frame(e.g. 4kb)을 logical memory(e.g. 4kb)와 맞춤 -> page logical memory 와 physical memory를 완전히 분리한다. Os가 Logical 과 Physical을 Mapping 물리주소 공간이 연속적이지 않도록 관리하는 체계 외부 단편화, 관련 압축 필요성 방지 대부분 o/s에서 사용 된다. cpu가 생성하는 논리주소는 Page number(p, 페이지 테이블 인덱스) + Page offset(d, 페이지 내 offset)로 이뤄져 있다. page size는 하드웨어에 따라 다르지만 반드시 2의 거듭제곱 꼴이다. 만약 logical ad..
주메모리의 관리, Main Memory memory에 Load된 program -> process 메모리는 바이트로 이뤄진 주소를 배열로 한다. PC(Programcounter) -> 주소 -> 명령어, 필요하면 더 데이터를 더 가져오거나 내보낼 수도 있다. 기본 하드웨어 Basic HardWare 메모리 CPU는 각 처리 코어에 내장된 레지스터와 메인 메모리에만 접근할 수 있다. 명령어와 데이터들은 CPU가 접근할 수 있는 레지스터와 메인 메모리에 있어야 한다. 캐시 CPU 코어에 내장된 레지스터에는 CPU가 빠르게 접근할 수 있다. 다만 메모리에 접근하는 속도는 상대적으로 느리다. CPU와 메모리 사이에 캐시라는 빠른 속도의 메모리를 추가하여 자주 접근하는 데이터를 캐시에 둠으로써 속도 차이 문제를..
교착상태, 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 -> 제한 없..
실시간 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..