본문 바로가기

전체 글502

오늘의 알고리즘(4월 7일) 1. 백준, 프린터 큐, 1966번 www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 2. 생각해보자 - 문제부터 이해 해보자. 첫번째 예시 3 1 0 5 최초의 입력은 총 테스트 케이스의 개수를 의미한다. 그러므로 3개의 테스트 케이스가 있다는 뜻이다. 두번째 줄의 1은 총 문서의 개수를 의미한다. 그러므로 총 1개의 문서가 있다는 뜻이다. 두번째 줄의 0은 현재 찾고 있는 문서가 몇번 인덱스에 위치했는지를 의미한다. 그러므로 0번 인덱스에 있다. 세번째 줄의 .. 2021. 4. 7.
11. 인터럽트의 종류 1. 대표적인 interrupt의 종류 a) 프로그램 또는 코드상의 예외 발생으로 인한 interrupt 위의 코드를 보면 인터럽트가 발생하는 부분은 1을 0으로 나누는 부분이다. 0으로 1을 나눌 수 없기 때문에, 이부분에서 에러가 발생한다. 인터럽트를 통해 예외가 발생했음을 운영체제(OS)에게 알리고 이를 알맞게 처리하게 된다. b) 타이머 interrupt - 선점형 스케줄러 또는 시분할 시스템을 사용한다면 일정 시간마다 interrupt를 발생시켜 OS에게 알린다. c) 입출력(I/O) 장치 사용을 위한 interrupt 프로그램 실행 중 기타 장치 사용을 위해 발생되는 인터럽트를 말한다. 프린터, 키보드, 마우스, 저장매체 등이 존재한다. 2. Interrupt 구분 a) 내부 interrupt.. 2021. 4. 7.
10. 인터럽트란? 1. 개념 CPU가 프로그램을 실행하고 있을 때, 어떤 이벤트(하드웨어 또는 예외처리 등)가 발생하여 이를 운영체제(OS)에게 알리고 CPU에서 처리하는 기술 2. 인터럽트가 필요한 이유 a) 선점형 스케줄러 선점형 스케줄러에서는 프로세스를 교체하기 위해서 현재 running 상태의 프로세스를 중단시킨다. 현재 실행중인 프로세스를 중지시키는 기능 b) I/O 장치와의 커뮤니케이션 입력장치 또는 저장매체에서의 데이터 처리가 완료된 경우, wait(=block)상태에 있는 프로세스를 깨워 ready 상태로 전환될 수 있게끔 운영체제(OS)에게 알려주는 기능 c) 예외상황 처리 CPU가 프로그램을 실행하고 있을 때, 프로그램 상의 에러나, 하드웨어 상의 문제 등 예외상황이 발생하면 운영체제(OS)가 이를 처리.. 2021. 4. 6.
오늘의 알고리즘(4월 6일) 1. 백준, 스택수열, 1874번 www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 2. 생각해보자 - 먼저, 문제에서 주어진 정보를 정리해보자. 1) 스택을 구현한다. (LIFO 특성) 2) push 와 pop 메소드를 사용한다. 3) 첫번째 입력값 n이 입력된 다음부터 입력되는 정수의 개수다. ex) 8이 첫번째 입력값이라면 이를 제외하고 앞으로 8개 정수가 더 입력된다. 4.. 2021. 4. 6.
9. 선점형과 비선점형 스케줄러 1. 개념 a) 선점형 스케줄러(Preemptive Scheduling) 하나의 프로세스가 다른 프로세스 대신에 CPU(프로세서)를 차지할 수 있음 현재 CPU를 사용중인 프로세스를 멈추고 다른 프로세스에 CPU를 할당할 수 있다. ex) 시분할 시스템 b) 비선점형 스케줄러(Non-preemptive scheduling) 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음 현재 CPU를 사용중인 프로세스가 자발적으로 block(wait)상태로 전환되거나 실행이 끝나는 상태(terminated)가 아닌 경우, CPU를 다른 프로세스에 할당할 수 없다. ex) 배치 처리 시스템 2. 스케줄러 정책에 따른 알고리즘 조합 FIFO(FCFS), SJF, Priority-based: 어떤 프.. 2021. 4. 5.
오늘의 알고리즘(4월 5일) 1. 백준, 2789번, 블랙잭 www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 2. 생각해보자 - 규칙은 다음과 같다. 첫번째 입력값으로 카드 개수인 N과 최대값 M이 주어진다. 두번째 입력값으로 카드의 숫자 N개가 주어진다. 이 문제의 핵심은 N개의 카드 중 3장의 조합을 이용하여, M에 가장 가까운 최대값을 찾는 것이다. - 다음과 같은 예시를 생각해보자. 먼저 N과 M을 받는 코드가 필요할 것이다. n, m = list.. 2021. 4. 5.
오늘의 알고리즘(4월2일) 1. 백준 2920번, 음계 www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 2. 생각해보자 리스트에서 원소를 차례대로 비교하여 오름차순 / 내림차순을 판단한다. 내림차순과 오름차순을 판별할 수 있는 기준 값이 필요하다. ex) 오름차순 = True, 내림차순 = False 라면 오름차순 ex) 오름차순 = False, 내림차순 = False 라면 혼합차순 ex) 오름차순 = False, 내림차순 = True 라면 내.. 2021. 4. 2.
8. 프로세스 상태와 스케줄링 알고리즘 1. 멀티프로그래밍과 wait 멀티 프로그래밍: CPU 활용도를 최대화 하기위한 스케줄링 알고리즘 Wait: 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정 a) 개요 위와 같이 프로그램 A, B, C가 있으며 각 프로그램은 위의 그림처럼 CPU를 할당받아 사용한다. 각 프로그램은 wait 상태에 있는 동안 CPU를 사용하지 않는다. CPU 활용도를 최대화하는 방법은, 각 프로그램의 wait 시점에서 CPU 사용을 필요로 하는 다른 프로그램을 실행시키는 것이다. 결과적으로, 그림의 combined 처럼 스케줄링을 구현하여 CPU 활용도를 100%로 유지할 수 있다. 어떻게 해야 이러한 스케줄링 알고리즘을 만들 수 있는지 알아보자. b) 프로세스 상태 - 프로그램의 CPU 사용여부를 판단하려면 프.. 2021. 4. 2.
7. 운영체제 - 스케줄링 알고리즘 1. 프로세스란? 실행중인 프로그램을 프로세스라고 한다. 프로세스는 작업, task, job 이라는 용어와 혼용된다. 응용 프로그램을 하나의 프로세스라고 하지 않는다. (응용 프로그램은 여러개의 프로세스로 이루어짐) 스케줄러가 프로세스를 관리한다. 2. 스케줄링 알고리즘 - 어느 순서대로 프로세스를 실행시킬까에 대한 방법론 a) 스케줄링 알고리즘의 목표 시스템이 달성하고자 하는 퍼포먼스를 목표로 한다. ex) 시분할 시스템: 프로세스 응답 시간을 가능한 짧게 ex) 멀티 프로그래밍: CPU 활용도의 최대화 및 프로세스 실행을 빠르게함 b) FIFO 스케줄러 - 프로세스 중간에 다른 작업없이, CPU를 계속 사용한다는 전제 하에 알고리즘을 생각해보자. 가장 간단한 스케줄러의 형태로, 배치 처리 시스템에 유.. 2021. 3. 31.
6. 운영체제 핵심개념 - 프로세스 스케줄링 1. 프로세스 스케줄링 프로세스란? 실행중에 있는 응용 프로그램을 의미한다. 스케줄링의 대상이 되는 작업(task)와 같은 의미로 쓰인다. 프로세스는 최소 1개의 스레드(thread)를 갖고 있으며, 스레드 단위로 스케줄링이 수행된다. 스케줄링이란? 응용 프로그램을 CPU에 할당하는 방식을 의미한다. 응용 프로그램을 CPU에 어떤 순서로 어떤 방식으로 할당하는 일이다. 2. 프로세스 스케줄링의 종류 - 배치 처리 시스템, 시분할 시스템, 멀티 태스킹, 멀티 프로세싱, 멀티 프로그래밍 a. 배치 처리 시스템( = 일괄 처리 시스템) 응용 프로그램을 순차적으로 CPU에 할당하여 실행시키는 방식 Queue 자료구조와 같은 방식으로 작동한다. (First In, First Out) 그러므로 배치 처리 시스템은 .. 2021. 3. 29.
5. 운영체제의 구조 1. CPU Protection Rings CPU도 권한 체계를 갖고 있다. - 사용자 모드: 일반적인 명령 실행 = 응용프로그램이 사용하는 명령어 - 커널 모드: 특권 명령어 실행 및 원하는 작업 수행을 위한 자원접근이 가능 = OS가 사용하는 명령어 - 대부분의 운영체제는 Ring 0(커널모드)과 Ring 3(사용자모드)만 사용한다. a) 커널이란 무엇인가? OS 본연의 핵심 기능을 의미한다. 즉, OS가 CPU에 접근 및 조정할 때 사용하는 기능을 말한다. b) 쉘에 대하여 쉘은 OS와 사용자를 연결시키는 인터페이스의 역할을 한다. 위에 첨부된 CPU Protection Ring 전개도에서 볼 수 있듯이, Ring 3(사용자 모드)가 Ring 0(커널 모드)를 감싸고 있기 때문에 shell(껍질)이.. 2021. 3. 26.
4. 운영체제, 응용 프로그램, 컴퓨터 하드웨어의 관계 1. 운영체제, 응용 프로그램, 컴퓨터 하드웨어의 관계 운영체제, 응용프로그램, 컴퓨터 하드웨어를 도서관에 비유해보자. 운영체제 = 도서관 응용 프로그램 = 시민 하드웨어 = 책 그렇다면 운영체제의 역할은 다음과 같다. 시민은 도서관에서 원하는 책(자원)을 요청한다. 도서관은 요청된 책을 시민에게 빌려준다 대여기간이 다 되면, 도서관이 해당 책을 회수한다. 이 비유는 실제 운영체제, 응용프로그램, 컴퓨터 하드웨어의 관계를 잘 표현한다. OS는 Application이 요청하는 메모리를 허가 및 분배한다. OS는 Application이 요청하는 CPU 시간(하드웨어)을 제공한다. Application 실행이 완료 및 종료되면, OS는 대여된 메모리와 하드웨어를 회수한다. 2. 쉘(shell)이란? 운영체제의.. 2021. 3. 26.