반응형

분류 전체보기 172

[OS] RAID

RAID (Redundant Array of Independent Disks) 디스크의 성능 지표로는 성능(performance), 용량(capacity), 신뢰성(reliability)이 있는데 RAID는 다중 디스크를 사용하는 디스크 가상화 기술로 단일 디스크에 비해 성능, 용량, 신뢰성을 모두 향상시킨다. RAID 방식은 0 ~ 6까지 7개의 레벨로 구성되며 서로 계층적 관계는 없지만 다음 3가지 특성을 공유한다. 운영체제에 의해서 단일 논리적인 드라이브로 판단되는 물리적 디스크 드라이브의 집합 데이터는 배열의 물리적 드라이브에 스트라이핑(striping) 기법을 사용하여 분산 중복된 디스크 용량은 패리티 정보를 저장하는데 이는 데이터 복구를 보장하기 위함 두 번째와 세 번째 특성의 세부 사항들은 ..

운영체제(OS) 2022.12.08

[OS] Hard Disk, Disk Scheduling

하드 디스크의 구조에 관한 포스팅 [파일처리] 하드디스크(Hard Disk)의 구조 [파일처리] 하드디스크(Hard Disk)의 구조 하드디스크의 구조 (위에서 본 모습) (옆에서 본 모습) Platter - 데이터가 저장되는 곳, 즉 디스크를 말한다. - platter 여러 개가 겹쳐져있는 구조를 가진다. Spindle - 플래터를 회전시키는 역할을 한 sunho-doing.tistory.com disk I/O 소요 시간에 관한 포스팅 [파일처리] 하드디스크의 구조 - 디스크 액세스 비용 [파일처리] 하드디스크의 구조 - 디스크 액세스 비용 하드디스크에 데이터를 읽거나 쓰는 행위를 디스크 액세스(Disk Access)라고 한다. 디스크 액세스 비용 Seek time - Arm이 데이터가 있는 실린더로 ..

운영체제(OS) 2022.12.08

[OS] File System

파일 시스템 파일 시스템이란 컴퓨터에서 파일이나 자료를 쉽게 발견 및 접근할 수 있도록 보관 또는 조직하는 체계이다. 그 중 VSFS (Very Simple File System)의 구현에 대해 알아본다. Block 파일 하나가 필요로 하는 디스크의 최소 공간을 클러스터 또는 블록이라고 한다. 대개 블록 하나의 크기는 4KB이며 각 블록은 아래의 4가지로 분류된다. Super block - 파일 시스템의 전체 정보를 담는 블록으로 하나의 파일 시스템에 1개만 존재 Allocation structure block - inode 및 데이터에 대한 두 개의 비트맵 (free 0, used 1) Key meta data block - inode struct의 테이블이 저장됨 User data block - 실제..

운영체제(OS) 2022.12.07

[OS] pthread

pthread lib Unix 계열 POSIX 시스템에서 병렬적으로 작동하는 소프트웨어를 작성하기 위하여 제공하는 API 쓰레드의 생성, 소멸, 제어 등을 편하게 구현 가능 pthread 라이브러리를 링크하기 위해 컴파일 시 -lpthread를 옵션으로 넣어야 함 pthread 함수 쓰레드 생성 int pthread_create(pthread_t *thread, const pthread_attr_t *attri, void *(*start_routine)(void*), void *arg); ptrhead_t *thread - 함수를 실행할 쓰레드 변수의 포인터 const pthread_attr_t *attr - 쓰레드의 특성 void *(*start_routine)(void*) - 실행될 함수 void *..

운영체제(OS) 2022.12.06

[OS] Deadlock

데드락 (Deadlock) 데드락은 교착 상태라고도 부르며 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 무한히 기다리는 상태이다. 데드락의 발생조건 1. 상호 배제 - 한 순간에 한 프로세스만이 해당 자원을 사용할 수 있다. 2. 점유 대기 - 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기해야 한다. 3. 비선점 - 이미 할당된 자원을 강제로 빼앗을 수 없다. 4. 환형 대기 - 자원 할당 그래프에서 환형(cycle)이 만들어진 경우 즉, 서로 다른 프로세스의 행동을 기다리는 상황이다. 1 ~ 3의 조건은 데드락의 필요 조건이다. 즉 어느 하나라도 충족하지 않으면 데드락은 발생하지 않으며 모든 조건이 충족되었다고 하더라도 무조건 데드락이 발생하는 것은..

운영체제(OS) 2022.12.05

[OS] Semaphore

세마포어 (Semaphore) - 범용 세마포어 세마포어는 공유된 자원의 데이터 혹은 임계영역 등에 여러 프로세스 혹은 쓰레드가 접근하는 것을 막아주는 기법이다. 기본적인 작동 원리는 한 프로세스가 특정 신호를 수신할 때까지 wait 하도록 강제하는 것으로 다음과 같은 연산들에 의해 동작한다. 1. semInit - 세마포어 변수를 음이 아닌 값으로 초기화를 수행한다. 2. semWait - 세마포어 변수 값을 감소시킨다. 만약 값이 음수가 되면 호출한 프로세스는 블록된다. 그 외에는 정상적으로 프로세스를 수행한다. 3. semSignal - 세마포어 변수 값을 증가시킨다. 만약 값이 양수가 아니면 semWait에 의해 블록된 프로세스들 중 하나를 깨운다. typedef struct{ int count;..

운영체제(OS) 2022.12.04

[우테코 회고록] 우아한테크코스 5기 AOS 프리코스 4주차

4주차 미션 - 다리 건너기 https://github.com/Lee-Sunho/kotlin-bridge/tree/Lee-Sunho GitHub - Lee-Sunho/kotlin-bridge Contribute to Lee-Sunho/kotlin-bridge development by creating an account on GitHub. github.com 달라진 점 1. 기능 구현 목록을 세분화 하는 것 이전 주차 까지는 기능 구현 목록을 작성할 때 단순히 프로그램의 실행 순서에 따라 번호를 매기며 작성하였다. 반면 이번 주 부터는 클래스의 분리, 도메인과 UI의 분리를 쉽게 하기 위해 기능 구현 목록을 작성하는 단계에서부터 입력 관련 기능, 출력 관련 기능, 도메인 관련 기능으로 분리하여 작성하였다..

우테코 회고록 2022.11.25

[우테코 회고록] 우아한테크코스 5기 AOS 프리코스 3주차

3주차 미션 - 로또 https://github.com/Lee-Sunho/kotlin-lotto/tree/Lee-Sunho GitHub - Lee-Sunho/kotlin-lotto: 로또 미션을 진행하는 저장소 로또 미션을 진행하는 저장소. Contribute to Lee-Sunho/kotlin-lotto development by creating an account on GitHub. github.com 달라진 점 1. 상수 및 문자열을 하드 코딩하지 않는 것 따로 constants 패키지 안에 Constant 클래스와 Message 클래스를 만들고 각각 companion object 안에 상수 및 문자열들을 정의함으로써 하드 코딩을 하지 않을 수 있었다. 2. 패키지 및 클래스의 분리 이번 주에 추가..

우테코 회고록 2022.11.24

[우테코 회고록] 우아한테크코스 5기 AOS 프리코스 2주차

2주차 미션 - 숫자 야구 https://github.com/Lee-Sunho/kotlin-baseball/tree/Lee-Sunho GitHub - Lee-Sunho/kotlin-baseball: 숫자 야구 게임 미션을 진행하는 저장소 숫자 야구 게임 미션을 진행하는 저장소. Contribute to Lee-Sunho/kotlin-baseball development by creating an account on GitHub. github.com 달라진 점 1. 깃 커밋 메시지 1주차 끝나고 규칙적이고 체계적인 깃 커밋메시지에 대한 중요성을 깨닫고 여러 글들을 참고하며 커밋 메시지 작성법을 익혔다. 특히 커밋 메시지 타입을 구분하는 것에 신경을 많이 썼다. 새로운 기능을 추가할 때는 feat, 오류 등..

우테코 회고록 2022.11.11

[우테코 회고록] 우아한테크코스 5기 AOS 프리코스 1주차

1주차 미션 - 온보딩(Onboarding) https://github.com/Lee-Sunho/kotlin-onboarding/tree/Lee-Sunho GitHub - Lee-Sunho/kotlin-onboarding: 온보딩 미션을 진행하는 저장소 온보딩 미션을 진행하는 저장소. Contribute to Lee-Sunho/kotlin-onboarding development by creating an account on GitHub. github.com 배운 점 1. Kotlin 이 때 동안 안드로이드 프로젝트를 할 때 자바만 사용해 왔기 때문에 이번 미션을 통해 코틀린을 처음 접했다. 뭔가 자바랑 파이썬을 반반씩 섞은 느낌이라 익숙하면서도 어색했다. 미션을 수행하기 전에 유튜브로 대충 기본 문법을..

우테코 회고록 2022.11.04
반응형