분류 전체보기
-
[OS] Process SynchronizationComputer Science 2023. 4. 27. 01:18
오늘로 운영체제 독학이 마무리되었다. 마무리된 김에, 이해하기 어려웠던 개념인 Process Synchronization에 대해 알아보려 한다. 프로세스 간 메시지를 전송하거나, 공유 메모리를 통해 특정 데이터를 공유하게 되는 경우 문제가 발생할 수 있다. CPU를 할당받은 프로세스가 공유 메모리에 대한 작업을 수행하는 상황에, 중간에 다른 프로세스에서 해당 메모리 내 같은 데이터에 대한 작업이 수행되는 경우를 말한다. 이를 Race Condition이라고 한다. Race Condition은 작업 도중 OS가 개입하는 경우 때문에 발생한다. 1. CPU의 kernel 수행 중 Interrupt 발생 시 2. 프로세스가 System Call을 요청하여 kernel 모드로 수행중인데 Context Switc..
-
[알고리즘] DFS와 BFSProgrammers 2023. 4. 21. 08:35
탐색이란 많은 양의 데이터 중 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍의 측면에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS가 있는데, 이 알고리즘들의 원리를 제대로 이해해야 코딩 테스트의 탐색 문제 유형을 풀 수 있다. 알고리즘을 공부하기 위해 필요한 자료구조 개념들 LIFO , Last In First Out 스택 한쪽만 뚫려있는 구조. 삽입과 추출이 한쪽에서만 진행 push : 스택에 데이터를 넣는 작업 pop : 스택에서 데이터를 꺼내는 작업 가장 윗 부분 : top, 가장 아랫부분: bottom FIFO, First In First Out 큐 한쪽에서는 데이터 삽입만, 다른 한쪽에서는 데이터 추출만 진행 enQueue :..
-
[Dynamic Programming]개미 전사Programmers 2023. 4. 16. 19:47
개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메뚜기 정찰병들은 일직선상 존재하는 식량창고 중 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량 창고를 약탈해야 한다. 입력 4 1 3 1 5 출력 8 입력 조건 : 첫째 줄에 식량창고의 개수 N, 둘째 줄에는 공백으로 구분, 각 식량창고에 저장된 식량의 개수 K 출력 조건 : 개미 전사가 얻을 수 있는 식..
-
둘 만의 암호Programmers 2023. 4. 16. 01:34
두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다. index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다. skip에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 규칙대로 바..
-
[OS] Synchronous I/O와 Asynchronous I/OComputer Science 2023. 4. 12. 08:35
- I/O, 입출력 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것 동기식 입출력, Synchronous I/O 어떤 프로그램이 입출력 요청을 했을 때 디스크 입출력이 완료된 후에야 그 프로그램이 후속 작업을 수행할 수 있는 방식 프로그램이 디스크에서 어떤 정보를 읽어오라는 요청을 했을 때 디스크 입출력이 완료되기까지는 어느 정도의 시간이 소요된다. 이때 동기식 입출력은 입출력이 진행되는 동안 그 프로그램의 다음 명령을 수행하지 않고 기다린다. 이후 입출력이 완료되어 인터럽트를 통해 그 사실을 전달된 후에야 CPU의 제어권이 프로그램에게 넘어가서 다음 명령을 수행할 수 있게 된다. 동기식 입출력은 CPU는 입출력 연산이 끝날 때까지 인터럽트를 기다리며 자원을 낭비하게 되는 것이다. 이..
-
[재귀 함수] 신나는 함수 실행Programmers 2023. 4. 7. 14:35
문제 재귀 호출만 생각하면 신이 난다! 아닌가요? 다음과 같은 재귀함수 w(a, b, c)가 있다. if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 위의 함수를 구현하는 것은 매우 쉽다. 하지만, 그대로 구현하면 값을 구하는데 매우 오랜 시간이 걸린다. (예를 들면, a=15, b=15, c=15) a, b, c가 주어졌을 때, w(a, b, c)를 출력..
-
[재귀 함수] 재귀 함수란 무엇인가요?Programmers 2023. 4. 7. 13:38
문제 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다. 중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다. 떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다. JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자. 입력 교수님이 출력을 원하는 재귀 횟수 N(1 ≤ N ≤ 50)이 주어진다. 출력 출력 예시를 보고 재귀 횟수에 따른 챗봇의 응답을 출력한다. 예제 입력 1 복사 2 예..
-
SaaS, Software as a ServiceData Engineer 2023. 4. 2. 23:48
SaaS는 클라우드 기반의 소프트웨어 제공 모델로, 클라우드 제공업체가 클라우드 애플리케이션 소프트웨어를 개발 및 유지/관리하고, 자동 소프트웨어 업데이트를 제공하고, 인터넷을 통해 Pay-as-you-Go 방식으로 고객에게 소프트웨어를 제공한다. 퍼블릭 클라우드 제공업체는 미들웨어, 애플리케이션 소프트웨어, 보안을 포함한 모든 하드웨어 및 전통적인 소프트웨어를 관리한다. 따라서 SaaS 고객은 비용을 크게 줄일 수 있으며, On-Premise 시스템 및 소프트웨어를 유지/관리할 때보다 더 빠르게 솔루션을 배포, 확장 및 업그레이드가 가능하며 총 소유 비용을 훨씬 더 정확하게 예측할 수 있는 장점이 있다. SaaS의 역사 2000년대 초 개발된 1세대 SaaS 솔루션은 단절, 경직된 형태였으며, 한 가지..