분류 전체보기
-
Busy Waiting, Sleep카테고리 없음 2021. 6. 11. 16:13
프로그래밍을 하다 보면 동기화를 하기 위해서 혹은 선행 작업이 끝나기를 기다리기 위해서 wait을 하는 경우가 존재한다. 이 때 사용하는 방식으로 sleep 방식이 있고 busy-waiting을 하는 방식이 있는데 두 방식의 차이점에 대해서 정리해볼려고 한다. 아마 대기해야하는 상황에서 별도의 sleep을 사용해보지 않았다면 대부분은 busy-waiting방식을 사용했을 것이다. 보통 이런 대기 상황에 대한 구현을 하는 경우는 쓰레드를 여러개 활용하는 경우에 다른 쓰레드의 선행작업을 기다리는 경우가 있을 수 있고 혹은 멀티 프로세스 환경에서 다른 프로세스의 선행작업이 끝나지 않은 경우 등이 있다. A. Busy Waiting Busy-waiting이란 어떤 조건을 만족하지 못할 경우에, 그 조건을 만족할..
-
Undecidable, Soundness, Completeness카테고리 없음 2021. 6. 10. 17:53
계산 가능한 문제는 크게 Decidable한지 Undecidable한지로 나뉠 수 있다. 일반적으로 개발하면서 마주치고 해결하는 문제들은 decidable한 문제로, P 클래스와 NP 클래스의 문제들이 이 영역에 속한다. 그래서 대부분 알고리즘 구현을 한다던지 어떤 문제를 마주했을 때 해결하고자 하는 문제들은 다 decidable한 문제이고, 그렇기 때문에 Soundness나 Completeness에 대해 크게 고민해보지 않았을 것이다. 이번에는 Undecidable한 문제들에 대해서 다뤄볼 예정이다. Undecidable한 문제의 정의부터 해야하는데, 정의는 문제에 대한 정답이 맞는지 틀리는지 항상 도출해내는 알고리즘을 설계하는게 불가능한 문제를 의미한다. 말로 설명해서는 이해가 힘들 수 있지만, 대표..
-
Linux란카테고리 없음 2021. 6. 10. 16:29
Linux는 오픈소스로 제작되고 있는 UNIX기반의 운영체제이다. 앞의 정의와 같이 말한다면 사람들은 저마다 떠올리는 그림이 다를 것이다. Linux라고 하면 예전 같은 경우에는 Bash를 이용해서 검은색 바탕화면에 커맨드 입력을 통해 컴퓨터를 사용하는 환경을 생각하는 사람도 있을 것이고, 컴퓨터 전공 시간에 더 배워본 사람들은 우분투 정도로 생각하는 사람도 있을 것이다. 정의부터 하자면 리눅스 커널을 기반으로 하는 운영체제의 그룹을 의미한다. 운영체제라고 하면 단순히 CPU, 메모리, 스토리지 등 여러 하드웨어 리소스들을 제어할 수 있는 커널만 의미하는 것이 아니라, 사용자들이 커널을 잘 사용할 수 있게 제공되는 여러 시스템 소프트웨어들 및 어플리케이션들을 다 모아둔 것을 의미한다. 예를 들어 Wind..