본문 바로가기

컴퓨터공학기초 개념/운영체제41

컴공기초 - 운영체제 개념 총정리(하) 1. 교착(Deadlock)과 기아(Starvation) 상태 - 교착과 기아상태는 스레드의 동기화 이슈를 해결하기 위해 작성하는 로직에서 발생하는 문제다. ▶ 교착(Deadlock) - 대기중인 두 스레드가 서로의 작업이 끝나기를 기다리는 상황(= 무한대기) ▶ 교착(dealock)의 발생조건 상호배제(Mutex) - 프로세스들이 필요로하는 자원에 대해 독점을 요구 점유대기(Hold & Wait) - 프로세스가 자원을 할당받은 상태에서 다른 자원을 기다림 비선점(Non-preemptive) - 다른프로세스가 사용중인 자원을 뺏을 수 없음 순환대기(Circular wait) - 각 프로세스가 다음 프로세스가 요구하는 자원을 가지고 있음 ▶ 교착의 해결방안 - 위의 4가지 발생조건 중 한가지를 제거한다. .. 2021. 7. 22.
컴공기초 - 운영체제 개념 총정리(상) 1. OS, 응용 프로그램, 시스템콜 ▶ OS란? - 시스템 자원 관리자 - 시스템 자원이란, 컴퓨터의 모든 하드웨어를 의미(CPU, Memory, 저장매체, 입력장치) ▶ OS가 필요한 이유 - 시스템 자원의 효율적 분배와 사용을 관리하기 위해 ▶ 응용 프로그램이란? - OS 위에서 돌아가는 모든 프로그램 (= SW, application) ▶ Shell 이란? - OS의 주요 기능 중 하나는 사용자에게 interface를 제공하는 것 - Shell이 사용자에게 interface를 제공하는 응용 프로그램이다. - Shell은 사용자가 필요로 하는 OS의 기능을 연결해주는 역할을 한다. - 예를 들어, 리눅스 CLI에서 명령어를 입력하는 등의 행위가 가능한 이유가 shell 덕분이다. ▶ API(Appl.. 2021. 7. 16.
39. 가상머신의 이해 - 가상 머신은 최근의 인공지능이나 클라우드 컴퓨팅에서 많이 사용되는 기술이다. - 가상 머신 기술을 운영체제 측면에서 보면, 소프트웨어를 이용하여 하드웨어를 여러개 구현하는 것이다. - 이와같은 이유로 OS 측면에서 가상머신을 위한 특별한 기술이나 깊이있는 접근을 필요로 하지 않는다. - 하지만, 가상머신 기술 자체는 대학원의 전공으로 지정될 만큼 깊이있는 기술이다. - 이번 포스팅에서는 가상머신에 대해 가볍게 알아보도록 하자 1. 가상머신이란? - 하나의 하드웨어(컴퓨터)에서 다수의 운영체제를 실행하도록 하여 개별 컴퓨터처럼 사용할 수 있도록 하는 것 - 이를 두고, 소프트웨어를 통해 하드웨어를 emulate(모방하다)한다고 말한다. 2. 가상머신 구현방식 a) Virtual Machine Type .. 2021. 7. 12.
38. 부팅의 이해 - 운영체제 부분에서 부팅 과정은 핵심적으로 다루는 주제가 아니다. - 그러므로 참고로 이해를 하면 좋을 것 같다. 1. 부팅이란? - Boot 프로그램을 이용하여 컴퓨터를 켜서 동작시키는 절차 ▶ Boot 프로그램: Storage에서 OS커널을 특정 주소의 물리 메모리에 복사하고 커널의 처음 실행위치를 PC로 설정하는 프로그램 2. 부팅과정 - 컴퓨터를 키면, BIOS가 특정 Storage를 읽어와 bootstrap loader를 메모리에 올리고 실행한다. - bootstrap loader 프로그램이 있는 곳을 찾아서 실행시킴 * ROM-BIOS 칩: 메모리로 구분되며, 컴퓨터의 전원이 꺼져도 데이터가 남아있다. a) 부팅과정의 이해 1. 컴퓨터가 켜지면, CPU는 무조건 ROM의 특정 주소(=FFFF.. 2021. 7. 12.
37. 파일 시스템 - inode 방식과 가상 파일시스템 1. inode 파일 시스템 - inode 방식의 파일 시스템은 다음 세가지의 블럭을 갖고 있다. ▶ 슈퍼 블록: 파일 시스템의 전체 정보를 가진 블록 ▶ 아이노드 블록: 각 파일의 상세 정보를 가진 블록 ▶ 데이터 블록(= 디스크 블록): 실제 데이터를 가진 블록 a) 슈퍼 블록 - 슈퍼블록은 파일 시스템의 전체적인 정보와 파티션 정보를 갖고 있다. - df라는 리눅스 명령어는 슈퍼블록의 정보를 받아오는 명령이다. - 해당 명령어를 이용하여 터미널에서 위의 사진과 같은 파일시스템의 전체적인 정보를 받아 올 수 있다. b) inode와 파일의 관계 - 각 파일은 inode의 번호를 할당 받는다. ▶ 프로세스가 생성되면 프로세스ID를 할당 받는 것 처럼, 파일도 생성과 함께 inode 번호를 할당 받는다... 2021. 7. 9.
36. 파일시스템 - 파일 시스템의 이해 1. 파일시스템이란? - 파일 시스템은 운영체제가 저장매체에 파일을 쓰기(write)위한 자료구조 또는 알고리즘을 의미한다. a) 파일 시스템이 만들어진 이유(블럭) - 0과 1로 이루어진 데이터를 어떻게 저장매체에 관리할까? ▶ 비트 단위로 주소를 매겨서 읽고 쓰고 등 관리하기에 오버헤드가 너무 크다 ▶ 그래서 블럭 단위로 관리하는 방법이 고안됨 (4kb 단위) ▶ 블럭마다 고유번호를 부여하여 읽고 쓰는 방식이 고안됨 -그러나 데이터가 점점 많아 질수록 일반 사용자가 블럭을 관리하는데 한계를 느낌 ▶ 그래서 블럭이 아닌, 사용자가 이해하기 쉬운 데이터의 집합(= 객체)이라는 개념이 생김 ▶ 데이터의 집합 = 객체 = 파일 이라는 개념이 등장 ▶ 사용자는 파일 단위로 데이터를 관리하고, 각 파일은 블럭 .. 2021. 7. 9.
35. 가상메모리 - 세그멘테이션 기법 1. Segmentation 기법 - 세그멘테이션 기법은 페이징 시스템과 비교되는 기법이다. - 페이징 기법과는 다르게 가상메모리를 서로 다른 크기의 논리 단위인 세그먼트(Segment)로 분할한다. ▶ 페이징 기법에서는 가상 메모리를 동일한 크기의 단위인 페이지(page)로 분할한다. a) 세그먼트의 가상주소 ▶ 가상주소 v = (s, d) ▶ s: 세그먼트 번호 ▶ d: 세그먼트 내부의 변위값 b) 세그먼트의 물리주소 계산방식 - 세그먼트 또한 page table과 같은 역할을 하는 세그먼트 테이블을 갖고 있다. - 물리주소를 계산하는 방식 또한 page와 동일한 방식을 사용한다. 2. 페이징 시스템 vs 세그멘테이션 기법 - 세그먼트는 페이지와 다르게 서로 다른 크기로 물리 메모리에 적재된다. 3... 2021. 7. 9.
34. 가상메모리 - 페이지 교체 알고리즘 1. 페이지 교체 정책(Page Replacement Policy) - 페이지 교체 정책은 한정적인 메모리를 효율적으로 사용하기 위한 기법 중 하나이다. - 쉽게 설명하자면, 메모리에 올려진 페이지 중 어떤 것을 내리고 어떤 새로운 페이지를 올릴지를 결정하는 규칙이다. - 일종의 swapping algorithm 이다. a) FIFO 페이지 교체 정책 - 가장 먼저 메모리에 올려진 페이지를 교체하는 방식 - 현실성과 효율성이 떨어져서 실제로 잘 사용되지는 않는다. b) OPT 최적 페이지 교체 정책(OPTimal Replacement Policy) - 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 방식 - 일반 OS에서는 구현 불가(예측이 불가능 하기 때문) c) LRU 페이지 교체 정책(Leas.. 2021. 7. 8.
33. 가상메모리 - 페이지 폴트 - 이번 포스팅은 페이징 시스템에 대한 더 깊은 이해를 다룰 예정이다. 1. 다양한 페이징 기법 - 페이징 시스템에서 가장 중요한 것은 프로세스의 데이터를 어느 시점에 어떤 데이터를 물리 메모리에 올리느냐는 것이다. - 여기에서 두가지 페이징 기법이 등장한다. a) 선행 페이징(Anticipatory Paging, Pre-paging) - 선행 페이징 기법은 프로세스의 모든 데이터를 미리 물리 메모리에 올려놓고 처리하는 것을 의미한다. - 사실상, 이 기법은 현실성이 많이 떨어지는 페이지 처리 방법이다. b) 요구 페이징(Demand Paging, Demanded Paging) - 요구 페이징 기법은 프로세스의 모든 데이터를 물리 메모리에 적재하지 않고, 필요한 시점에만 메모리에 적재한다. - 필요하지 .. 2021. 7. 8.