분류 전체보기 779

[ BOJ ][JAVA][17836] 공주님을 구해라

https://www.acmicpc.net/problem/17836 17836번: 공주님을 구해라! 용사는 마왕이 숨겨놓은 공주님을 구하기 위해 (N, M) 크기의 성 입구 (1,1)으로 들어왔다. 마왕은 용사가 공주를 찾지 못하도록 성의 여러 군데 마법 벽을 세워놓았다. 용사는 현재의 가지고 있는 www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 5073 1232 920 23.297% 문제 용사는 마왕이 숨겨놓은 공주님을 구하기 위해 (N, M) 크기의 성 입구 (1,1)으로 들어왔다. 마왕은 용사가 공주를 찾지 못하도록 성의 여러 군데 마법 벽을 세워놓았다. 용사는 현재의 가지고 있는 무기로는 마법 벽을 통과할 수 없으며, 마법 벽을 피해 (N, ..

[ BOJ ][JAVA][1480] 보석모으기

https://www.acmicpc.net/problem/1480 1480번: 보석 모으기 첫째 줄에 보석의 개수 N, 가방의 개수 M, 가방의 최대 한도 C가 주어진다. N은 1보다 크거나 같고, 13보다 작거나 같은 자연수이고, M은 1보다 크거나 같고, 10보다 작거나 같은 자연수이다. C는 1보 www.acmicpc.net 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 128 MB 665 213 159 33.403% 문제 세준이는 잘 모르겠지만, 세준이는 보석에 미쳐있다. 따라서, 숌 보석상에 있는 모든 보석을 다 훔치려고 한다. 하지만, 세준이는 보석을 다 가져올 수는 없다. 그 이유는 가방의 개수에 제한이 있고, 한 가방마다 넣을 수 있는 보석의 개수가 제한이 있기 때문이다. ..

[ Java ] 08. JAVA의 형변환(Promotion, Casting)

Casting 캐스팅이란? 변수가 원하는 정보를 다 갖고 있는 것 int a = 0.1; // (1) 에러 발생 X int b = (int) true; // (2) 에러 발생 O, boolean 은 int로 캐스트 불가 (1)은 0.1이 double 형이 지만, int로 될 정보 또한 가지고 있다. (2)는 true는 int형이 될 정보를 가지고 있지 않다. 왜 캐스팅이 필요한가요? 다형성 : 오버라이딩 된 함수를 분리해서 활용할 수 있다. 상속 : 캐스팅을 통해 범용적인 프로그래밍이 가능하다. 형변환의 종류 묵시적 형변환 Promotion 캐스팅이 자동으로 발생 (업캐스팅) 작은 타입이 큰 타입으로 변환 Parent p = new Child(); (Parent) new Child()할 필요가 없다. P..

[ Java ] 07. JVM에 관하여

JVM Java Virtual Machine 시스템 메모리를 관리하면서, 자바 기반 애플리케이션을 위해 이식 가능한 실행 환경을 제공 JVM은, 다른 프로그램을 실행시키는 것이 목적입니다. 크게 2가지 기능이 있습니다. 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 하는 것 프로그램 메모리를 관리하고 최적화 하는 것 JVM은 코드를 실행하고, 해당 코드에 대해 런타임 환경을 제공하는 프로그램에 대한 사양이다. 개발자들이 말하는 JVM은 보통 어떤 기기상에서 실행되고 있는 프로세스, 특히 자바 앱에 대한 리소스를 대표하고 통제하는 서버를 지칭합니다. 자바 애플리케이션을 클래스 로더를 통해 읽어들이고, 자바 API와 함께 실행하는 역할이며 JAVA와 OS 사이에서 중개자 역할을 수행하여 O..

[ Java ] 06. String, StringBuffer, StringBuilder의 특징

String, StringBuffer, StringBuilder 분류 String StringBuffer StringBuilder Storage Area Heap or Constant String Pool Heap Heap 변경 No (Immutable)(불변) Yes (Mutable)(가변) Yes(Mutable)(가변) 동기화 Yes Synchronized 가능 (Thread-safe) Synchronized 불가능. String 특징 new 연산을 통해 생성된 인스턴스의 메모리 공간은 변하지 않습니다.(Immutable) ex. + Boolean, Integer, Float, Long Garbage Collector로 제거되어야 합니다. 문자열 연산시 새로 객체를 만드는 Overhead가 발생합니다..

[ Java ] 05. Call by value vs Call by reference

Call by value vs Call by reference call by value 값에 의한 호출 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시공간이 생성됩니다.(종료 해당 공간 사라짐) call by value 호출 방식은 함수 호출 시 전달되는 변수 값을 복사해서 함수 인자로 전달합니다. 이 때 복사된 인자는 함수 안에서 지역적으로 사용되기 때문에 local value 속성을 가집니다. 따라서, 함수 안에서 인자 값이 변경되더라도, 외부 변수 값은 변경되지 않습니다. 예시 void func(int n) { n = 20; } void main() { int n = 10; func(n); printf("%d", n); } 10 call by reference 참조에 의한 호출 c..

[ Java ] 04. Java의 컴파일 과정

자바 컴파일과정 위로 자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Virtual Machine) 덕분인데, 그렇다면 JVM의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정으로 알아보자. 자바 컴파일 순서 개발자가 자바 소스 코드(.java)를 작성합니다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일한다. 이 때 나오는 파일은 자바 바이트 코드(.class) 파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이트 코드를 JVM의 클래스 로더(Class Loader)에게 전달합니다. 클래..

[ OS_quiz ] Chapter 11-15. Storage Management

Quiz HDD의 storage space를 할당하기 위한 allcation method에 대한 설명으로 가장 틀린 것은? contiguous 할당은 외부 단편화를 일으킬 수 있다. linked 할당은 파일의 특정 영역에 바로 접근할 수 없다는 단점이 있다 indexed 할당은 contiguous 할당과 달리 외부 단편화 문제를 겪지 않는다. linked 할당은 연결 리스트의 중간에서 배드 섹터가 발생하더라도 복원하는 데 문제가 없다. 디스크 공간 할당 방법 중에서 단편화 현상을 겪지 않으면서, 만들어지는 파일의 크기에 직접 신경쓸 필요도 없고, 파일이 생성될 때 그 크기를 미리 선언할 필요도 없지만, 직접 파일의 특정 섹터에 접근 하기 어려운 할당 방법은? contiguous allocation ind..

[ OS_quiz ] Chapter 10. Virtual Memory

Quiz (연습문제 10.3) 다음 페이지 교체 알고리즘들 중에서 Belady's anomaly 현상을 겪지 않는 알고리즘으로 묶인 것은? a. LRU replacement b. FIFO replacement c. Optimal replacement d. Second-change replacement a, b a, c b, c b, d (연습문제 10.8) Consider the following page reference string: 1, 2, 3, 4, 5, 3, 4, 1, 6, 7, 8, 7, 8, 9, 7, 8, 9, 5, 4, 5, 4, 2. How many page faults would occur for the following replacement algorithms, assumi..

[ OS_quiz ] Chapter 9. Main Memory

Quiz 다음과 같은 메모리 파티션이 순서대로 주어져있다. 100MB 500MB 200MB 300MB 600MB 다음과 같은 크기를 가진 네 개의 프로세스가 순서대로 도착했을 때, 212MB 417MB 112MB 426MB 다음 중 가장 효율적인 전략은 무엇인가? First-Fit Best-Fit Worst-Fit Random-Fit ___ is the area in a region or a page that is not used by the job occupying that region or page. This space is unavailable for use by the system until that job is finished and the page or the region is released..

[ OS_quiz ] Chapter 8. Deadlocks

Quiz 다음 여섯개의 resource-allocation graph의 그림 중에서 데드락이 발생한 경우만 모아 놓은 것을 고르시오. a, b, d b, c, d b, d b, d, e, f b, c, d, e, f 어떤 시스템이 세 개의 쓰레드 T1, T2, T3로 구성되어 있고 이 쓰레드들은 동일한 자원인 R의 인스턴 스 세 개를 필요로 하고 있다. 이 시스템이 절대로 데드락에 빠지지 않게 하기 위해서는 R이 최소한 몇 개 이상의 인스턴스를 가져야 하는가? 6 7 8 9 10 데드락 방지 (deadlock prevetion) 방법에 대한 설명으로 가장 틀린 설명은? 새로운 자원을 요청(request)하기 전에 모든 자원을 반납(release)하면 데드락은 발생하지 않는 다. 모든 자원에 유일한 번호를..

[ OS_quiz ] Chapter 7. Synchronization Examples

Quiz Readers-Writers Problem에서 Reader 프로세스가 다음과 같은 자료 구조를 가지고 있다 semaphore rw_mutex = 1; semaphore mutex = 1; int read_count = 0; 다음 사례들 중에서 rw_mutex 세마포어를 사용할 필요가 없는 경우로 가장 적절한 것은? 첫번째 reader 프로세스가 임계구역에 진입할 때. 마지막 reader 프로세스가 임계구역에 진입할 때. writer 프로세스가 쓰기 작업을 완료할 때. 두번째 reader 프로세스가 임계구역에 진입할 때. Bounded Buffer Problem의 consumer process 구조를 아래와 같이 구현했다. while (true) { (A) wait(full); (B) wait(m..

[ OS_quiz ] Chapter 6. Synchronization Tools (2)

Quiz 국수를 아주 좋아하는 철학자 5명이 모였습니다. 그들은 원형 테이블에 둘러 앉아 "삶이란 무엇인가?"라는 질문에 대한 해답을 고민하기 시작했습니다. 원형 테이블의 중앙에는 국수가 놓여 있었고, 테이블에는 모두 다섯 개의 젓가락이 놓여 있었습니다. 즉, 철학자들 한 명의 왼쪽과 오른쪽에 각각 한 개의 젓가락이 놓여 있다는 뜻입니다. 따라서 철학자들은 왼쪽과 오른쪽 양쪽의 젓가락을 이용하여 국수를 먹을 수 있습니다. 국수는 무한리필되기 때문에 5명의 철학자들은 해답을 찾을 때까지 생각을 하기로 했습니다. 하지만 어느날 그들은 모두 굶어 죽었습니다. 왜 그랬을까요? 이 문제는 자원(젓가락)을 공유하는 프로세스(철학자)의 동기화 문제로 유명한 메타포어인 "철학자들의 저녁식사" 문제입니다. 위 문제의 설..

[ OS_quiz ] Chapter 6. Synchronization Tools (1)

Quiz 프로세스 동기화(synchronization)에 대한 설명으로 가장 옳은 것은? 여러 프로세스가 공유 자원에 접근할 때, 병렬적(parallel)인 처리를 할 때는 항상 동기화가 필요 하지만, 병행적(concurrent)인 처리를 할 때는 항상 동기화가 필요하지는 않다. 생산자-소비자 문제를 두 개의 프로세스가 shared memory로 처리할 때는 동기화를 해 주어야 하지만, 두 개의 쓰레드가 같은 주소 공간에서 buffer를 저장할 때는 동기화가 필요하지 않다. *여러 쓰레드가 어떤 공유하는 변수에 접근하여 값을 변경하지 않고 읽기만 하는 경우에는 경쟁 상황이 발생하지 않으므로 동기화를 해 줄 필요가 없다. * 프로세스 동기화(synchronization)는 프로세스가 공유하는 자원에 접근하..

[ OS_quiz ] Chapter 5. CPU Scheduling

Quiz The ____ is a module that gives control of the CPU's core to the process selected by the CPU scheduler. dispatcher distributor deployer dissipator 다음 중 CPU 스케줄러를 설계할 때 목표로 삼기에 가장 어색한 것은? CPU의 사용효율(utilization)을 높이겠다 단위시간당 처리하는 프로세스의 개수(throughput)을 늘리겠다. 프로세스가 대기하는 시간(waiting time)을 줄이겠다 프로세스의 응답시간(response time)을 늘리겠다. 선점형(preemptive), 비선점형(nonpreemptive) 스케줄러에 대한 설명으로 가장 옳은 것은? Shorte..