전체 글
-
동기화 도구들Computer Science/Operating System 2021. 1. 10. 23:56
질문 6.1 배경 경쟁 상황이란 무엇인가? 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황이라고 합니다. 6.2 임계 구역 문제 임계 구역이란 무엇인가요? 적어도 하나 이상의 다른 프로세스가 공유하는 데이터에 접근하고 갱신하는 구역 임계 구역 문제를 해결하기 위한 해결책의 3가지 요구 조건은 무엇인가요? 상호 배제 진행 한정된 대기 6.5 Mutex Locks 뮤텍스 락의 동작 원리는? acquire() 함수가 락을 획득하고, release() 함수가 락을 반환합니다. Mutex 락은 available이라고 불리는 불린 변수를 가지는데 이 변수 값이 락의 가용 여부를 표시합니다. 락이 가용하면 acquire() 호출은 성..
-
CPU 스케줄링Computer Science/Operating System 2021. 1. 10. 00:38
질문 5.1 기본 개념 CPU 스케줄러가 하는 역할은 무엇인가요? CPU가 유휴 상태가 될 때마다, 운영체제는 준 비 큐에 잇는 프로세스 중에서 하나를 선택해 실행해야 합니다. 이러한 선택 절차를 수행하는 역할을 합니다. 선점 스케줄링과 비선점 스케줄링의 차이는 무엇인가요? 비선점 스케줄링에서는 CPU가 한 프로세스에 할당되면 프로세스가 종료하든지, 또는 대기 상태로 전환해 CPU를 방출할 때까지 점유합니다. 선점 스케줄링에서는 CPU가 어떤 프로세스가 종료되기 전 다른 프로세스에 할당할 수 있습니다. 디스패처란 무엇인가요? 디스패처란 CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈이며, 문맥 교환, 사용자 모드 전환 등의 역할을 수행합니다. 5.2 스케줄링 기준 CPU 스케줄링 알고..
-
스레드와 병행성Computer Science/Operating System 2021. 1. 10. 00:08
질문 4.1 개요 스레드는 어떻게 구성되어 있는가? 스레드 id, 프로그램 카운터, 레지스터 집합, 스택으로 구성됨 단일 스레드 프로세스와 다중 스레드 프로세스의 차이? 다중 스레드 프로세스는 동시에 하나 이상의 작업을 수행할 수 있음 다중 스레드 프로그래밍의 장점은 무엇이 있는가? 응답성 : 동시에 많은 일을 처리할 수 있기 때문에 다른 작업을 하면서도 사용자의 요청에 응답할 수 있다. 자원 공유 : 프로세스는 공유 메모리와 메시지 전달 기법을 통해야만 자원을 공유할 수 있음. 반면에 스레드는 자신이 속한 프로세스의 자원들과 메모리를 공유할 수 있다. 경제성 : 스레드 생성은 프로세스 생성보다 시간과 메모리를 덜 소비한다 규모 적응성 : 병렬 수행이 가능하기 때문에 빠르다 4.2 다중 코어 프로그래밍 ..
-
프로세스Computer Science/Operating System 2021. 1. 10. 00:07
질문 1. 프로세스 개념 프로세스 메모리 배치 섹션은 어떻게 되어있는가? 텍스트 섹션 : 실행 코드 데이터 섹션 : 전역 변수 힙 섹션 : 프로그램 실행 중에 동적으로 할당되는 메모리 스택 섹션 : 함수를 호출할 때 임시 데이터 저장장소(함수 매개변수, 지역변수 등) 프로세스와 프로그램의 차이? 프로그램은 명령어 리스트를 내용으로 가진 디스크에 저장된 파일과 같은 수동적인 존재이다. 이와는 대조적으로 프로세스는 다음에 실행할 명령어를 지정하는 프로그램 카운터와 관련 자원의 집합을 가진 능동적인 존재이다. 프로그램이 메모리에 적재되면 프로세스가 된다 프로세스 상태는 어떤 것이 있는가? new : 프로세스가 생성 중 running : 명령어들이 실행되고 있음 waiting : 프로세스가 어떤 이벤트가 일어나..
-
[백준]1918. 후위 표기식알고리즘/백준 2021. 1. 8. 23:16
[백준]1918. 후위 표기식 📄 링크 후위 표기식 💡 문제 분석 중위 표기식을 입력으로 받아 후위 표기식으로 출력하는 문제입니다. 후위 표기식은 괄호가 필요 없기 때문에 입력으로 받아도 출력하지 않습니다. 보통 이런 수식 문제들은 스택을 이용하는 경우가 많은 것 같습니다. ArrayDeque을 이용해서 풀어보았습니다. ‘(‘ 열린 괄호가 나온다면 스택에 푸시합니다 ‘)’ 닫힌 괄호가 나온다면 열린 괄호가 나올 때까지 출력합니다. A ~ Z 그대로 출력합니다 Operator 자신보다 우선순위가 낮은 연산자가 나올 때까지 스택에서 뽑아서 출력합니다 우선순위를 리턴하는 함수를 만들었습니다. 마지막엔 스택이 빌때까지 뽑아서 출력합니다. ⌨️ 코드 import java.util.ArrayDeque; import..
-
[백준]1629. 곱셈알고리즘/백준 2021. 1. 8. 23:00
[백준]1629. 곱셈 📄 링크 곱셈 💡 문제 분석 자연수 A, B, C를 입력 받아 A를 B번 곱한 것을 C로 나눈 나머지를 구하는 문제입니다. 시간 제한이 0.5초이고 B가 21억까지 나올 수 있기 때문에 단순히 21억번을 곱하는 문제는 아닐 거라고 생각했습니다. 분할 정복을 사용해서 홀수일 때와 짝수일 때를 나누어 답을 구해나갔습니다. 절반으로 나눈 값을 곱해줄 때 java의 Math.pow 메서드를 사용했었는데 double 타입을 반환하여 오버플로우가 발생하여 실패했습니다. 오버플로우 방지를 위해 왠만하면 모든 계산에 % C를 해주자 ⌨️ 코드 import java.util.Scanner; public class Boj1629_tk { public static void main(String[] a..
-
[백준]1504. 특정한 최단경로알고리즘/백준 2021. 1. 8. 01:43
[백준]1504. 특정한 최단 경로 📄 링크 특정한 최단 경로 💡 문제 분석 1번 정점에서 N번 정점까지 이동할 때, 주어진 두 정점을 반드시 경유해서 이동하는 최단 경로를 구하는 문제입니다. a와 b를 경유해서 N으로 가는 최단 거리를 구하기 위해서는 1 → a → b → n으로 가는 경로와 1 → b → a → a로 가는 경로를 비교해서 최소값을 구해야합니다. 1번 정점과 A, B에서 각각 다익스트라 알고리즘을 사용하여 다른 점으로 가는 최단 거리를 구하여 계산하였습니다. 최단 거리를 구했을 때 아주 큰 값이 나온다면 경로가 존재하지 않는다고 판단하여 -1을 출력하였습니다. ⌨️ 코드 import java.io.BufferedReader; import java.io.IOException; import..