인터럽트 - CPU 비동기 처리 원리
·
CS 지식/운영체제
우리는 입출력 장치를 통해 컴퓨터를 사용하고, 이 처리들은 CPU를 통해 이루어진다.CPU 자원은 한정되어 있는데 이 CPU가 수많은 작업들을 빠르게 처리하려면 어떻게 해야할까?이에 대한 답을 찾기위해 우리가 CPU를 사용하는 과정을 알아보고,어떻게 CPU를 효율적으로 사용할 수 있는지 공부해보자.    ∎  입력이 CPU에 닿는 법⦁ 우리가 사용하는 입출력 장치는 장치 컨트롤러를 통해 CPU, 공유 메모리와 연결된다.(장치 컨트롤러는 하드웨어 통로이다.)⦁ 하드웨어인 장치 컨트롤러를 응용 프로그램에서 사용하기 위해서는 이를 제어하는 소프트웨어가 필요하고, 이를 장치 드라이버라고 한다. ⦁ 예를 들어 사용자가 응용 프로그램에서 입력 장치를 통해 데이터를 입력하면, 입력 장치 드라이버는 입력 장치 컨트롤러..
프로세스와 스레드 비교 - 적절한 사용 예시
·
CS 지식/운영체제
∎  프로세스와 스레드 정의⦁  프로세스는 운영체제로부터 자원을 할당받은 작업의 단위(메모리를 할당받아 올라간 후, CPU 자원을 할당받는다) ⦁  스레드는 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위  ∎  메모리 구조 ⦁  프로세스 한개 당 메모리 할당 : 코드 영역(기계어), 데이터 영역(전역 변수), 스택 영역, 힙 영역(동적 할당)  ⦁  스레드는 스택 영역을 복사해 각자 가지고 있고, 나머지는 공유한다.  ∎  프로세스  문맥 교환 과정멀티 프로세스의 자원 공유는 CPU 레지스터 교체 뿐 아니라, RAM과 CPU 사이의 캐시 메모리까지 초기화되서 자원 부담이 크다. 스케줄링 알고리즘에 따라 실행순서가 빠른 프로세스 먼저 실행하고, 만약 I/O처럼 외부 이벤트가 일어날 경우, 대기에 들..
컴퓨터 자원 - 프로세서, 메모리
·
CS 지식/운영체제
운영체제는 컴퓨터의 자원을 적절하게 사용하여 우리가 원하는 작업을 하기 위해 필수적으로 공부해야 하는 지식이다.컴퓨터의 자원에 대해 잘 알고 있어야 제어를 할 수 있기 때문에 이번 시간에는 컴퓨터의 구조에 대해서 배워보자.  ∎  컴퓨터 제어권의 흐름 맨 처음 컴퓨터를 켜면, ROM 칩에 있던 BIOS가 메모리에 적재됩니다.그리고, BIOS는 비휘발성 저장장치(ROM)에 들어있는 부트스트랩 프로그램에게 제어권을 넘깁니다. 부트스트랩 프로그램은 RAM을 사용할 수 있게 초기화한 후,운영체제 커널을 RAM에 올려서 사용가능하게 만듭니다. 그리고 제어권을 운영체제 커널에게 넘겨줍니다.  ∎  휘발성 / 비휘발성 메모리의 필요성CPU는 메모리에 저장된 프로그램을 자신의 레지스터로 적재한 후, 작업을 실행합니다...
데드락 (DeadLock, 교착 상태)과 예방법
·
CS 지식/운영체제
∎  교착 상태란?구조가 자원이 나올 수 없게 되어있어서, 무한히 대기만 해야하는 상태∎ 다음 4가지가 "모두" 해당되면 교착 상태가 발생!상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때점유와 대기 : 자원을 점유하고 있는 상태로 다른 자원을 할당받기 기다리고 있을 때비선점 : 다른 프로세스의 자원을 강제로 뺏을 수 없을 때원형 대기 : 프로세스들이 원의 형태로 자원을 대기한다∎ 교착 상태 예방법위의 4가지 상황들 중 하나를 없앤다! ⦁  상호 배제 없애기 : 모든 자원을 공유시키는 것은 위험하다. ⦁  점유와 대기 없애기 : 하나의 프로세스에 자원을 모두 할당하거나, 모든 프로세스에 자원을 모두 안주는 방식                                    ..
공유 자원 동기화
·
CS 지식/운영체제
프로세스들은 자원을 공유하기 때문에 동기화가 필요하다. ∎  순서를 맞추기 위한 동기화ex) 파일을 읽기 전에 쓰기가 먼저 이루어져야 한다.  ∎  동시 접근을 막는 동기화ex) 계좌에 돈을 입금, 출금할 때 잔액을 동기화 시켜야한다.전역 변수, 파일, 입출력장치, 보조기억장치, ... 등과 같은 공유자원에 동시 접근 막기임계 구역을 두어 접근을 관리한다.동시 접근으로 자원의 일관성이 깨지는 것을 Race Condition(레이스 컨디션)이라고 부른다.∎  레이스 컨디션 막는 원칙 (기술 면접)1. 상호 배제 : 임계 구역에 진행중인 프로세스가 있다면 다른 프로세스의 접근을 막아야 한다. 2. 진행 : 임계 구역에 아무도 없다면 접근할 수 있어야 한다.3. 유한 대기 : 언젠가는 접근할 수 있어야 한다...
메모리 - 커널 영역, 사용자 영역
·
CS 지식/운영체제
⦁  컴퓨터 자원 :  CPU, 메모리, 입출력 장치 ∎ 메모리의 "커널 영역"⦁ 운영체제란?실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램메모리의 커널 영역에 적재되어 있다.현존 하는 프로그램 중 크기가 가장 크다. ⦁ 메모리에서 응용 프로그램응용 프로그램은 보조 기억 장치에 있는 데이터이고, 사용 중일 때 메모리에 적재되고, 사용을 종료했을 때 메모리에서 삭제된다.(프린터 같은 입출력 장치도 마찬가지다)  ⦁ 운영체제 영역 나누기운영체제는 커널인 부분 + 커널이 아닌 부분으로 나눌 수 있는데, 커널은 핵심 서비스를 담당한다.커널이 아닌 부분은 UI(User Interface)가 있다.  ⦁ 응용 프로그램이 CPU 사용법CPU가 커널 모드이면 사용 가능하고..
CPU 스케줄링 알고리즘
·
CS 지식/운영체제
프로세스들에게 자원을 분배하는 방식인 CPU 스케줄링 ∎  스케줄링  특징공정하고 합리적으로 CPU 자원을 배분하는 것은 컴퓨터 성능과 직결된다.우선순위에 따라 순서를 정해야 한다.PCB를 기반으로 결정한다.PCB를 일일이 열어보는 것은 비효율적이기 때문에, 프로세스들을 스케줄링 큐에 넣는다.( * 큐를 이용하지만 선입선출 방식은 아니다.)큐에는 준비 큐와 대기 큐가 있다.준비큐 : CPU 사용 원할 때 줄서는 곳대기큐 : 입출력장치 이용 원할 때 줄서는 곳  스케줄링은 인터럽트가 가능한 선점형 스케줄링과 독점되어 인터럽트가 불가능한 비선점형 스케줄링이 있다.(선점형은 오버헤드 발생 가능)  ∎  스케줄링 알고리즘(아이디어를 공부하자) ✔ 선입 선처리 스케줄링(FCFS)First Come First Se..
프로세스와 스레드 개념
·
CS 지식/운영체제
프로세스(현재 실행 중인 프로그램)가 실행되면 커널 영역에 이들을 구분하는 PCB가 생성 된다. ∎  PCB운영체제는 여러 프로세스들을 CPU의 자원에 골고루 분배하기 위해, 프로세스들을 관리하는 자료구조가 필요한데, 이것이 프로세스 제어 블록(PCB)이다.프로세스와 관련된 정보가 저장되어 있다.PCB는 커널 영역에 생성되기 때문에 필요성이 끝나면 삭제 된다.PCB에는 PID(식별 번호), 자신의 차례가 오면 복원하기 위해 작업을 저장해 둔 레지스터 값, 프로세스의 현재 상태, CPU 스케줄링 정보, 메모리 저장 위치를 알려주는 메모리 관리 정보, 어떤 파일을 열고 어떤 입출력 장치를 사용했는지에 대한 목록들이 담겨 있다.  ∎   문맥 교환프로세스들이 돌아가며 자원을 할당 받아 사용할 때, 기존 정보들..
운영체제의 역할
·
CS 지식/운영체제
∎  운영체제란?실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램소중한 컴퓨터 자원(하드웨어)을 보호하고 잘 나눠 사용할 수 있도록 한다.위치 : 매우 특별한 프로그램이므로, 메모리의 커널 영역에 적재됨.운영체제는 메모리의 사용자 영역에 주소가 겹치지 않게 응용 프로그램들을 적재 시킨다.더 이상 실행되지 않는 프로그램은 삭제하며 메모리 자원을 관리한다.CPU를 사용할 때도 순서를 정해주고 사용 시간도 정해주어 질서를 정연하게 한다.   운영체제 안에는 커널과 커널이 아닌 부분으로 나뉜다 ⦁  커널이 아닌 부분사용자 인터페이스(사용자가 컴퓨터와 상호작용) ex. GUI(바탕화면 클릭), CLI(명령 프롬프트)⦁  커널인 부분운영체제의 심장 부분으로, 중요한 운영..
인터럽트 - CPU를 비동기적으로
·
CS 지식/운영체제
우리는 입출력 장치를 통해 컴퓨터를 사용할 수 있고, 이 처리들은 CPU를 통해 이루어진다.CPU 자원은 한정되어 있는데, 이 CPU가 수많은 작업들을 빠르게 처리하려면 어떻게 해야할까?이에 대한 답을 찾기위해 우리가 CPU를 사용하는 과정을 알아보고, 어떻게 CPU를 효율적으로 사용할 수 있는지 공부해보자.  ∎  입출력 작업이 CPU로우리가 사용하는 입출력 장치는 장치 컨트롤러를 통해 CPU, 공유 메모리와 연결된다.장치 컨트롤러는 하드웨어 통로이다.하드웨어인 장치 컨트롤러를 응용 프로그램에서 사용하기 위해서는 이를 제어하는 소프트웨어가 필요하고, 이를 장치 드라이버라고 한다. 예를 들어 사용자가 응용 프로그램에서 입력 장치를 통해 데이터를 입력하면 입력 장치 드라이버는 입력 장치 컨트롤러의 레지스터..
윤씅
'CS 지식/운영체제' 카테고리의 글 목록