전체 글

Developer Blog 📜 Lots of rules and no mercy ✨
·운영체제
파일 시스템 구현 사용자(user) 관점의 파일 시스템 파일 시스템 인터페이스 파일 시스템을 사용자에게 보여주는 방법은 무엇인가? 파일, 디렉토리, 속성(attribute), 작업(operation) 트리 구조 스토리지 관리(storage management) 관점의 파일 시스템 파일 시스템 구현 논리 파일 시스템을 저장장치에 매핑하는 방법은 무엇인가? 레이아웃, 데이터 구조, 알고리즘 스토리지 내부를 이해해야 한다. 파일 시스템은 저장 장치를 일련의 블록(sequence of blocks)으로 간주 데이터는 디스크와 메모리 간에 블록 단위로 전송 각 블록에는 일반적으로 512바이트인 섹터가 하나 이상 존재 파일 시스템 구현 각 파일에 대해 속성 및 파일 데이터를 모두 저장 속성 - 크기, 권한, 소유자..
·운영체제
파일 시스템 파일 시스템 저장 장치의 데이터를 구성하는 소프트웨어 사용자(user) 관점의 파일 시스템 파일 시스템 인터페이스 파일 시스템을 사용자에게 보여주는 방법은 무엇인가? 파일, 디렉토리, 속성(attribute), 작업(operation) 트리 구조 스토리지 관리(storage management) 관점의 파일 시스템 파일 시스템 구현 논리 파일 시스템을 저장장치에 매핑하는 방법은 무엇인가? 레이아웃, 데이터 구조, 알고리즘 스토리지 내부를 이해해야 한다. 파일 시스템의 목표 파일 개념 파일 이름이 지정된 관련 정보 모음 바이트의 시퀀스 보조 저장장치에 저장 데이터 파일과 프로그램 파일로 나뉜다. 파일 유지 관리를 위한 파일 속성(attributes) 이름(Name) : 사람이 읽을 수 있는 형..
·운영체제
최신 I/O 시스템 엄청나게 많은 종류의 I/O 장치 CPU는 장치 컨트롤러와 상호 작용 장치 컨트롤러에는 읽고 쓸 수 있는 일련의 레지스터가 포함 프로그래밍된 I/O 포트 I/O 특수 프로세서 명령어는 데이터를 전송하는 데 사용 인텔 아키텍처의 인/아웃 명령 각 장치는 서로 다른 I/O 포트를 사용(포트 번호) 메모리 매핑 I/O 장치 컨트롤러의 레지스터는 물리적 주소 공간에 매핑 주소는 하드웨어 점퍼 또는 부팅 시 프로그래밍에 의해 설정 I/O는 로드 및 저장 명령으로 수행 I/O 주소 공간은 시스템 메모리 주소 공간의 범위를 차지하므로 프로세스에 사용할 수 없다. 직접 메모리 액세스 직접 메모리 액세스 대규모 데이터 이동을 위해 프로그래밍된 I/O를 방지하는 데 사용 DMA 컨트롤러에 메모리 버스에..
·운영체제
하드디스크 내부 움직이는 헤드 디스크 메커니즘 디스크 I/O 서비스 시간(service time) 탐색 시간(Seek time) + 회전 지연(Rotation delay) + 데이터 전송 시간(Data transfer time) 탐색 시간(Seek time) 디스크 헤드를 원하는 트랙으로 이동하는 시간 탐색 시간 ≈ 탐색 거리 회전 지연(Rotation delay) 원하는 섹터가 디스크 헤드로 회전하는 데 걸리는 시간 최선의 경우 = 0 최악의 경우 = 1회전 시간 데이터 전송 시간(Data transfer time) 디스크 미디어에서 디스크 버퍼로 또는 그 반대로 데이터를 전송하는 시간 탐색 시간 또는 회전 지연 >> 데이터 전송 시간 하드 디스크 플래터의 범위는 .85"에서 14"(역사적으로) 일반적..
·운영체제
가상 메모리 개념 제한된 물리적 메모리 크기 실제 메모리의 사용 가능한 공간보다 큰 프로그램은 실행할 수 없다. 일반 프로그램 실행 패턴 프로그램의 일부만 실행되고 전체 프로그램은 실행되지 않는다. 오류 코드,예외 코드 배열 100x100 요소이지만 10x10 요소만 사용 프로그램의 특정 옵션 및 기능은 거의 사용되지 않는다. 전체 프로그램이 필요한 경우에도 모든 프로그램이 동시에 필요하지 않을 수 있다. 가상 메모리 메모리에 완전히 저장되지 않은 프로세스를 실행할 수 있다. 프로그램의 일부는 실행을 위해 메모리에 있어야 한다. 논리 메모리 주소 공간과 실제 메모리 주소 공간의 분리 논리 메모리 주소 공간은 물리적 메모리 주소 공간보다 클 수 있다. 가상 주소 공간 요구 페이징(Demand Paging)..
·운영체제
사용자 프로그램의 다단계 프로세스 주소 바인딩(Address binding) 주소 바인딩 프로그램 명령 및 데이터를 실제 메모리 주소에 연결하는 프로세스 주소 바인딩의 세 단계 컴파일 시간 바인딩(Compile time binding) 로드 시간 바인딩(Load time binding) 실행 시간 바인딩(Execution time binding) 컴파일 시간 바인딩(Compile time binding) 컴파일 시간에 메모리 위치를 알면 절대 주소의 절대 코드를 생성할 수 있다. 시작 위치가 변경되면 코드를 재컴파일해야 한다. 로드 시간 바인딩(Load time binding) 컴파일 시간에 메모리 위치를 알 수 없는 경우, 상대 주소로 재배치 가능한 코드를 생성할 수 있다. 시작 위치가 변경된 경우에만..
·운영체제
교착상태란 세마포어 사용 예 교착상태 차단된 프로세스 집합의 경우 각 프로세스는 리소스를 보유하고 있으며 집합의 다른 프로세스가 보유한 리소스를 획득하기 위해 대기 교착 상태 특성화 시스템 모델링 프로세스: P1, P2, … Pn. 자원 유형: R1, R2, …, Rm CPU 주기, 메모리 공간, I/O 장치, 파일 등. 각 리소스 유형의 Ri에는 Wi 인스턴스가 있다. 각 프로세스는 다음과 같이 리소스를 활용 request use release 네 가지 조건이 동시에 유지되면 교착 상태가 발생 상호 배제(Mutual exclusion) 한 번에 하나의 프로세스만 리소스를 사용 가능 점유 및 대기(Hold and wait) 하나 이상의 리소스를 보유한 프로세스가 다른 프로세스에서 보유한 추가 리소스를 획..
·운영체제
경쟁 상태(Race Condition) 공유 데이터에 동시 액세스하면 데이터 불일치를 초래할 수 있다. 경쟁 상태 여러 프로세스가 동시에 공유 데이터에 액세스하고 조작하는 상황. 경쟁 상태를 방지하려면 동시 프로세스를 동기화해야 한다. 유니프로세서 환경에서는 CPU 스케줄러에 의해서도 경쟁 상태가 발생할 수 있다. 크리티컬 섹션 문제 크리티컬 섹션 공유 데이터에 액세스하는 코드 세그먼트 크리티컬 섹션 문제 한 프로세스가 크리티컬 섹션에서 실행 중일 때 다른 프로세스가 크리티컬 섹션에서 실행되지 않도록 한다. 프로세스가 협력하는 데 사용할 수 있는 프로토콜을 설계해야 한다. 일반적인 프로세스 Pi의 일반적인 구조 do { entry section critical section exit section rem..
·운영체제
CPU-I/O 버스트 주기 CPU 버스트와 I/O 버스트의 교대 시퀀스 CPU 버스트 시간 히스토그램 CPU 스케줄러 CPU 스케줄러 실행할 준비가 된 프로세스 중에서 프로세스를 선택 CPU 스케줄링 결정은 다음과 같은 경우에 발생할 수 있다. 프로세스가 실행 상태(running)에서 대기 상태(waiting)로 전환(예: I/O 요청) 프로세스가 실행 상태(running)에서 준비 상태(ready)로 전환(예: 타임 슬라이스 만료) 프로세스가 대기(waiting)에서 준비 상태(ready)로 전환(예: I/O 완료) 프로세스가 종료 → 1, 4 스케줄링은 비선점적(non-preemptive) → 2, 3 스케줄링은 선점적(preemptive) 디스패처(Dispatcher) CPU 스케줄러가 선택한 프로..
·운영체제
쓰레드 웹 서버(Web server) 웹 페이지를 전송하는 컴퓨터 프로그램 웹 서버는 한 번에 많은 클라이언트에 서비스를 제공 웹 서버가 I/O 작업을 수행하는가? 차단 다른 클라이언트의 요청을 처리할 수 없다. 동시 서비스에는 많은 서버 프로세스가 필요 메모리 공간을 낭비 프로세스 생성 시간 지연 쓰레드가 필요하다. 공유 가능 : 코드, 데이터, 리소스 공유 불가 : 레지스터 값, 스택 쓰레드 CPU 활용도의 기본 단위 각 프로세스는 많은 쓰레드를 포함 가능 공유 가능 쓰레드 코드, 데이터, 힙(heap) 파일 열기 신호 처리기(signal handlers) 작업환경(현재 디렉토리, 사용자 ID 등) 고유 쓰레드(공유 불가) 스택 레지스터 쓰레드 ID 단일 및 다중 쓰레드 프로세스 쓰레드 vs 프로세스..
파스텔코랄
슬기로운 개발일지