전체 글 166

[쉽게 배우는 운영체제] 제 4장 CPU 스케줄링 연습문제 풀이 정답 (심화문제)

연습 문제 1. 시스템 내 전체 프로세스의 수를 조절하는 것으로, 장기 스케줄링 또는 작업 스케줄링이라 불리는 스케줄링 수준은 무엇인가? - 고수준 스케줄링 2. 어떤 프로세스에 CPU를 할당하고 어떤 프로세스를 대기상태로 보낼지 등을 결정하는 스케줄링 수준은 무엇인가? - 저수준 스케줄링 3. 어떤 프로세스가 CPU를 할당받아 실행 중이더라도 운영체제가 CPU를 강제로 빼앗을 수 있는 스케줄링은 무엇인가? - 선점형 스케줄링 4. 현재 입출력을 진행하는 프로세스로, 사용자와 상호작용이 가능하며 상호작용 프로세스라고도 불리는 것은 무엇인가? - 전면 프로세스 5. 준비 큐에 도착한 순서대로 CPU를 할당하는 비선점형 스케줄링 알고리즘은 무엇인가? - FCFS 스케줄링 6. 준비 큐에 있는 프로세스 중 실..

[쉽게 배우는 운영체제] 제 3장 프로세스와 스레드 연습문제 풀이 정답 (심화문제)

연습문제 1. 프로그램이 프로세스가 되려면 운영체제로부터 무엇을 받아야 하는가? - 프로세스 제어블록 (PCB) 2. 프로세스의 상태 중 CPU를 할당받기 위해 기다리는 상태는 무엇인가? - 준비상태 3. 프로세스의 상태 중 입출력 작업을 하기위해 이동하는 상태는 무엇인가? - 대기상태 4. CPU 스케줄러가 준비 상태에 있는 프로세스 중 하나를 골라 CPU를 할당하는 작업을 무엇이라고 하는가? - 디스패치 5. 유닉스에서 ctrl + r 키를 눌러 프로세스가 중단되면 프로세스는 어떤 상태로 바뀌는가? - 휴식상태 6. 실행 상태에서 하나의 프로세스가 나가고 새로운 프로세스가 들어오는 상황을 무엇이라고 하는가? - 문맥교환 7. 실행중인 프로세스로부터 새로운 프로세스를 복사하는 시스템 호출은 무엇인가? ..

[쉽게 배우는 운영체제] 제 2장 컴퓨터의 구조와 성능 향상 연습문제 풀이 정답 (심화문제)

제 2장 컴퓨터의 구조와 성능 향상 연습문제 1. CPU의 구성에 대해 설명하시오. - Data를 연산하는 산술논리 연산장치(ALU), 작업을 지시하는 제어 장치, Data를 임시로 보관하는 레지스터로 구성 2. 폰노이만 구조의 가장 중요한 특징을 설명하시오. - 모든 프로그램은 메모리에 올라와야지 실행 가능하다. 3. 버스의 종류를 나열하시오. - 제어버스, 주소버스, DATA버스 4. 단방향 버스에 대해 설명하시오. - 자료가 한방향으로만 전달되는 버스 5. 다음에 실행할 명령어의 주소를 가지고 있는 레지스터는 무엇인가? - 프로그램 카운터 (PC) 6. (문제수정) 현재 실행중인 명령어를 보관하는 레지스터는 무엇인가? - 명령어 레지스터(IR) 7. 메모리의 주소를 보관하는 레지스터는 무엇인가? -..

[쉽게 배우는 운영체제] 제 1장 운영체제의 개요 연습문제 풀이 정답 (심화문제)

연습문제 1. 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어는 무엇인가? - 운영체제 2. 가전제품과 같이 cpu의 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 무엇이라고 하는가? - 임베디드 운영체제 3. 사용자가 원하는 기능을 수행하기 위해 컴퓨터 자원을 사용하는 소프트웨어는 무엇인가? - 응용 프로그램 4. 운영체제가 없는 컴퓨터에서는 어떤 문제가 발생하는지 설명하시오. - 컴퓨터를 망가트릴 수도 있음, 새로운 기능구현 불가능(처음 설계한대로만 사용가능), 복잡한 기능 구현 어려움 5. 기계와 사용자 사이에 명령을 전달하고 처리한 결과를 알려주는 것을 무엇이라고 하는가? - 인터페이스 6. 프로그램과 데이터를 한번에 입력한 ..

[baekjoon] 백준 9465번 : 스티커 (by python 파이썬)

https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 정답 code #스티커 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): case = [] n = int(input()) for i in range(2): case.append(list(map(int,input().split()))) for j in range(1,n): if j == 1: case[0][..

[baekjoon] 백준 5639번 : 이진 검색 트리 (by python 파이썬) 재귀

https://www.acmicpc.net/problem/5639 5639번: 이진 검색 트리 트리를 전위 순회한 결과가 주어진다. 노드에 들어있는 키의 값은 106보다 작은 양의 정수이다. 모든 값은 한 줄에 하나씩 주어지며, 노드의 수는 10,000개 이하이다. 같은 키를 가지는 노드는 없다 www.acmicpc.net 정답 code # 이진 검색 트리 import sys input = sys.stdin.readline sys.setrecursionlimit(10**6) tree = [] while True: try: num = int(input()) tree.append(num) except: break def postorder(start,end): if start > end: return mid ..

[baekjoon] 백준 2638번 : 치즈 (by python 파이썬) bfs

https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 정답 code # 치즈 import sys input = sys.stdin.readline from collections import deque dx = [-1,1,0,0] dy = [0,0,-1,1] # bfs로 외부 공기를 탐색하며 외부공기와 접촉시마다 +1 카운트해줌 def bfs(): queue = deque() #맨 가장자리에는 치즈가 안놓이는 외부공기 queue.append..

[baekjoon] 백준 2407번 : 조합 (by python 파이썬) 수학 조합

https://www.acmicpc.net/problem/2407 2407번: 조합 n과 m이 주어진다. (5 ≤ n ≤ 100, 5 ≤ m ≤ 100, m ≤ n) www.acmicpc.net 정답 code # 조합 import math # nCm = n! / (n-m)! *m! n,m = map(int,input().split()) top = math.factorial(n) bottom = (math.factorial(n-m)) * (math.factorial(m)) print(top//bottom) solution math모듈에 factorial 함수를 이용하여 쉽게 구현 하였다. nCm = n! / (n-m)! * m!를 위아래로 나눠 계산후 출력해주면 된다.

[baekjoon] 백준 2263번 : 트리의 순회 (by python 파이썬) 재귀

https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net 정답 code #트리의 순회 import sys input = sys.stdin.readline sys.setrecursionlimit(10**5) n = int(input()) inorder = list(map(int,input().split())) postorder = list(map(int,input().split())) #후위순회에서 최상위노드를 찾은후 중위순회에서 찾기위해 인덱스번호 부여 nodenum = [0] ..

[baekjoon] 백준 2206번 : 벽 부수고 이동하기 (by python 파이썬) bfs

https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 정답 code #벽부스고 이동하기 from collections import deque dx = [0,0,1,-1] dy = [1,-1,0,0] def bfs(x,y,z): queue = deque() queue.append((x,y,z)) while queue: a,b,c = queue.popleft() #끝에 도달한경우 결과값 반환 if a == n-1 and b ==..