본문 바로가기

전체 글

(236)
[운영체제] CH8. Memory Management(2) Allocation of Physical Memory 물리적인 메모리를 어떻게 관리할 것인가? 메모리는 일반적으로 두 영역으로 나뉘어 사용된다. OS 상주 영역 - interrupt vector와 함께 낮은 주소의 영역을 사용한다. 사용자 프로세스 영역 - 높은 주소의 영역을 사용한다. 사용자 프로세스 영역의 할당 방법 Contiguous allocation -> 옛날 방식 각각의 프로세스가 메모리의 연속적인 공간에 적재(load)되도록 하는 방법이다. Fixed partition allocation (고정 분할 방식) Variable partition allocation (가변 분할 방식) Noncontiguous allocation 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있도록 하..
[BOJ-14888][완전 탐색/순열] 연산자 끼워넣기 - Java 문제 바로가기 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 입력으로 주어진 연산자들을 갖고 식을 만들어서 그 식의 최대/최솟값을 구하는 문제입니다. 완전 탐색으로 순열을 다 만들어서 풀어도 되고, 백트래킹으로 풀어도 됩니다. 6개월 전에 C++로 풀었던 백트래킹 코드도 올리게씀다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; i..
[BOJ-14503][시뮬레이션/BFS] 로봇 청소기 - Java 문제 바로가기 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 삼성 SW 역량테스트 기출문제로 시뮬레이션 문제입니다. 단순 시뮬레이션 문제라서 문제에서 요구하는 조건을 잘 생각해서 풀면 됩니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer..
[BOJ-14501][DP] 퇴사 - Java 문제 바로가기 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 딱 보자마자 DP로 풀면 되겠구나 싶었습니다. 하지만 N의 최댓값이 15기 때문에 완전 탐색해서 풀어도 되고 DFS로 풀어도 됩니다. 저는 DP를 잘 못하기 때문에 열심히 짱돌굴려서 풀어보았습니다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br ..
[운영체제] CH8. Memory Management(2) Allocation of Physical Memory 물리적인 메모리를 어떻게 관리할 것인가? 메모리는 일반적으로 두 영역으로 나뉘어 사용된다. OS 상주 영역 - interrupt vector와 함께 낮은 주소의 영역을 사용한다. 사용자 프로세스 영역 - 높은 주소의 영역을 사용한다. 사용자 프로세스 영역의 할당 방법 Continuous allocation -> 옛날 방식 각각의 프로세스가 메모리의 연속적인 공간에 적재(load)되도록 하는 방법이다. Fixed partition allocation (고정 분할 방식) Variable partition allocation (가변 분할 방식) Noncontiguous allocation 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있도록 하..
[운영체제] CH8. Memory Management(1) Memory Management 메모리란 주소를 통해서 접근하는 매체이다. 주소는 두 가지로 나뉜다. Logical address (=virtual address) 프로그램이 실행되고 프로세스마다 독립적으로 갖게 되는 주소 공간이다. 각 프로세스마다 0번지부터 시작한다. CPU가 다루는 주소는 logical address이다. Physical address 물리적인 메모리 주소로, 메모리에 실제로 올라가는 위치이다. Symbolic address 변수나 함수 이름을 주고 그 변수에 어떠한 값을 넣거나 함수 이름을 통해서 함수 호출을 하는 것과 같이, 프로그래밍을 할 때 숫자로 된 주소가 아닌 symbol로 된 주소를 갖고 프로그래밍을 하게 된다. 이때 사용하는 주소가 symbolic address 이다...
[BOJ-14500][시뮬레이션/DFS] 테트로미노 - Java 문제 바로가기 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net 블럭 네 개짜리 테트로미노를 만들어서 입력으로 주어진 맵에 테트로미노에 해당하는 구역의 합이 젤 큰 값을 구하는 문제입니다. 여러 방법으로 블럭을 만들 수 있습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static class..
[운영체제] CH7. Deadlock Deadlock (교착상태) 데드락이란 일련의 프로세스들이 서로가 가진 자원을 기다리며 block된 상태이다. 이때 말하는 자원(Resource)는 하드웨어, 소프트웨어 등을 포함하는 개념이다. 물리적인 것 뿐만 아니라 개념적인 것도 포함한다. e.g) I/O device, CPU cycle, memory space, semaphore, PID, 포트 번호, IP 주소, lock 등 그리고 프로세스가 자원을 사용하는 절차는 요청(Request), 할당(Allocate), 사용(Use), 반납(Release)과 같은 네 단계를 거친다. Deadlock 발생의 4가지 조건 데드락은 다음과 같은 네가지 경우에 반드시 발생한다. Mutual Exclusion (상호 배제) 매 순간 하나의 프로세스만이 자원을 사..