분류 전체보기(196)
-
가상 메모리와 페이징
운영체제의 가장 핵심적인 역할은 프로세스 관리와 메모리 관리이다.OS는 가상 메모리를 활용해서 메모리 관리를 어떻게 할까?스와핑가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 가상 메모리는 모든 데이터를 주 기억장치에 올리지 않고 필요한 부분만 올린다. 그리고 남은 것들은 보조기억장치에 존재하게 되며 필요할 때마다 보조기억장치에서 주기억장치로 옮겨서 사용한다. 예를 들어 입출력 작업의 요구로 대기 상태가 된 프로세스, 오랫동안 사용하지 않은 프로세스는 임시로 보조기억장치 일부 영역으로 옮겨진다. 이렇게 되면 주기억장치에 빈 공간이 생기고 이 공간에 새로운 프로세스를 담아 실행할 수 있다. 이런 방식을 스와핑이라..
2024.05.15 -
교착 상태와 해결 방법에 대한 이론
🚀교착상태란?식사하는 철학자 문제가 있다.철학자들은 두 포크를 모두 들어야 식사를 할 수 있다. 식사를 할 수 있는 순서는 왼쪽 포크가 사용가능하면 왼쪽 포크를 들고, 오른쪽 포크가 사용가능하면 오른쪽 포크를 든다. 그리고 모두 포크를 들었다면 식사를 하고 식사를 마쳤다면 오른쪽 포크부터 내려놓는다. 이 과정을 계속 반복하면 된다. 결론부터 말하면 모든 철학자가 왼쪽 포크를 드는 순간, 모든 철학자는 오른쪽 포크를 들 수 없기 때문에 아무도 식사를 하지 못하는 상황이 발생한다. 이것이 교착상태이다. 컴퓨터 공학에서 교착상태는 다음과 같이 설명할 수 있다.프로세스 P1이 자원 R2를 할당받아 사용하고 있고, 프로세스 P2는 자원 R1을 할당받아 사용하고 있다.그런데 P1은 자원 R1의 사용이 끝나기를 ..
2024.05.15 -
달력 (백준 20207)
수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장마가 시작되었고, 습기로 인해 달력에 표시한 일정이 지워지려고 한다. 지워지는 것을 막고자 수현이는 일정이 있는 곳에만 코팅지를 달력에 붙이려고 한다. 하지만 너무 귀찮았던 나머지, 다음과 같은 규칙을 따르기로 한다.연속된 두 일자에 각각 일정이 1개 이상 있다면 이를 일정이 연속되었다고 표현한다.연속된 모든 일정은 하나의 직사각형에 포함되어야 한다. 연속된 일정을 모두 감싸는 가장 작은 직사각형의 크기만큼 코팅지를 오린다.달력은 다음과 같은 규칙을 따른다.일정은 시작날짜와 종료날짜를 포함한다.시작일이 가장 앞선 일정부터 차..
2024.05.14 -
홀수 홀릭 호석 (백준 20164)
https://www.acmicpc.net/problem/20164🚀문제 접근수의 각 자리 숫자 중에서 홀수의 개수를 종이에 적는다.수가 한 자리이면 더 이상 아무것도 하지 못하고 종료한다.수가 두 자리이면 2개로 나눠서 합을 구하여 새로운 수로 생각한다.수가 세 자리 이상이면 임의의 위치에서 끊어서 3개의 수로 분할하고, 3개를 더한 값을 새로운 수로 생각한다.이 단계에 맞춰서 그대로 구현하기만 하면 된다.다만 까다로웠던 부분은 맨 마지막 부분이다. 임의의 위치에서 끊어 3개의 수로 분할해야하는데 처음에는 재귀를 활용한 조합으로 해결하려고 했다. 하지만 임의의 위치 2곳만 선택하면 되기 때문에 이중 for문을 활용해서 해결할 수 있다. 그리고 재귀함수에 cnt라는 파라미터를 넘겨서 총 홀수의 갯수를 ..
2024.05.14 -
배열 돌리기 1 (백준 16926)
문제크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다.A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] ↓ ↓ ↑ ↑A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5] ↓ ↑A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4][5]예를 들어, 아래와 같은 배열..
2024.05.13 -
프로세스 동기화
동기화란동기화는 특정 자원에 접근할 때 한 개의 프로세스만 접근하게 하거나, 프로세스를 올바른 순서대로 실행하게 하는 것을 의미한다.프로세스를 올바른 순서대로 실행하는 것을 실행 순서 제어를 위한 동기화라고 하고, 동시에 접근해서는 안되는 자원에 하나의 프로세스만 접근하도록 하는 것을 상호 배제를 위한 동기화라고 한다. 실행 순서 제어를 위한 동기화Book.txt라는 파일이 있다. Writer 프로세스는 텍스트 파일에 데이터를 저장하는 프로세스이고, Reader 프로세스는 데이터를 읽어오는 프로세스이다. 순서가 보장되지 않는다면 데이터를 저장하는 Writer 프로세스가 실행되기 전에 Reader 프로세스가 실행되어 올바른 저장값을 읽어오지 못할 수 있다. 상호 배제를 위한 동기화#include #incl..
2024.05.07