![[C++] 백준 12단계 - 1436번 문제 (영화감독 숌)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVBc2n%2FbtsngMFwB9L%2FRL8MQ2QMiyMlIK2LC4Xso0%2Fimg.png)
문제설명 소스코드 #include #include using namespace std; int main() { string str; int N; cin >> N; int i = 665; int count = 0; while (true) { ++i; str = to_string(i); //i를 문자열로 바꿈 if (str.find("666") == string::npos) continue; //문자열에 666이 들어가 있지 않다면 pass else //문자열에 666이 들어간다면 { ++count; //count 증가 if (count == N) break; } } cout
![[운영체제] 파일 시스템(File System)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAnJFc%2FbtsmlhF7qHF%2FIiBpckifaw5jkObFyxLwQ1%2Fimg.png)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파티셔닝(partitioning)과 포매팅(formatting) 파티셔닝(파티션을 나누는 작업) : 저장 장치의 논리적인 영역을 구획하는 작업 파티션 : 파티셔닝 작업을 통해 나누어진 하나의 영역 포매팅 : 포맷을 하는 작업, 어떤 종류의 파일 시스템을 사용할지 결정하고 새로운 데이터를 쓸 준비를 하는 작업 포맷(포매팅)의 종류 저수준 포매팅 : 저장 장치를 생성할 당시 공장에서 수행되는 물리적인 포매팅 논리적 포매팅 : 파일 시스템을 생성하는 포매팅 이 글에서 포매팅은 논리적 포매팅을 뜻한다. 파일 할당 방법 포매팅까지 끝난 하드 디스크에 파일을 저장하기 운영체제는 파..
![[C++] 백준 12단계 - 19532번 문제 (수학은 비대면강의입니다)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fro0bF%2Fbtsm82OZEuS%2FxLDwScZMkPN8F4IRbDbp9k%2Fimg.png)
문제설명 소스코드 #include using namespace std; int main(void) { int a, b, c, d, e, f; cin >> a >> b >> c >> d >> e >> f; for (int i = -999; i < 1000; ++i) { for (int j = -999; j < 1000; ++j) { if (a * i + b * j == c) { if (d * i + e * j == f) { cout
![[C++] 백준 20단계 - 18258번 문제 (큐 2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2tf6X%2FbtsnaLTghlC%2FeGMD8ppyKXTwLQUrKsEBWK%2Fimg.png)
문제설명 소스코드 #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); //표준 스트림 동기화 해제 cin.tie(NULL); //입력과 출력 연결 끊기 queue que; string command; int N; cin >> N; for (int i = 0; i > command; if (command == "push") { int X; cin >> X; que.push(X); } else if (command == "pop") { if (que.empty()) cout
![[운영체제] 파일과 디렉터리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk8y8W%2Fbtsl4mVp46M%2FlWWVEerq9ZGr1Ln79hZJeK%2Fimg.png)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파일과 디렉터리 모두 운영체제 내부 파일 시스템이 관리하는 존재들이다. 보조기억장치의 데이터 덩어리 파일(file) 보조기억장치에 저장된 관련 정보의 집합 의미 있고 관련 있는 정보를 모은 논리적 단위 파일을 이루는 정보 파일 이름 파일을 실행하기 위한 정보 파일 관련 부가 정보(=속성(attribute) 또는 메타데이터(metadata)) 윈도우 운영체제에서 임의의 파일을 선택하고 마우스 우클릭을 하고 속성 버튼을 누르면 나타나는 정보가 파일 속성이다. 파일 속성과 유형 유형 : 운영체제가 인식하는 파일 종류(확장자)를 나타냄 파일 연산을 위한 시스템 호출 파일을 다루..
![[운영체제] 페이징의 쓰기 시 복사와 계층적 페이징](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCVafi%2Fbtsl9vqO2fq%2F4hEpTpSzL4drxZMDkPwK5K%2Fimg.png)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 쓰기 시 복사(copy on write) 전통적인 관점에서 fork()함수를 이용하여 프로세스를 복제하면 코드 및 데이터 영역을 비롯한 모든 자원이 복제되어 서로 다른 메모리 공간에 적재된다. 각 프로세스의 페이지 테이블은 자신의 고유한 페이지가 할당된 프레임을 가리킨다. 이러한 복사 작업은 프로세스 생성 시간을 늦출 뿐만 아니라 불필요한 메모리 낭비를 야기한다. 쓰기 시 복사를 이용하면 각 프로세스(부모 프로세스와 자식 프로세스)는 동일한 프레임을 가리킨다. 이로써 굳이 부모 프로세스의 메모리 공간을 복사하지 않고도 동일한 코드 및 데이터 영역을 가리킬 수 있다. 만일..
![[운영체제] 페이지 교체와 프레임 할당](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJowXa%2Fbtsl0MOD6u2%2Fvddx2vvrkukajINHDJsbF1%2Fimg.png)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 운영체제는 한정된 물리적 메모리 용량 때문에, 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고, 프로세스들에게 적절한 수의 프레임을 할당해야 한다. 요구 페이징 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법 요구되는 페이지만 적재하는 기법 요구 페이징은 아래의 과정으로 흘러간다. 순수 요구 페이징(pure demand paging) 아무런 페이지도 메모리에 적재하지 않은 채 일단 프로세스 실행 프로세스의 첫 명령어부터 페이지 폴트가 발생 어느 정도 시간이 지난 후부터 페이지 폴트 발생 빈도가 적어짐 요구 페이징이 안정적으로 ..
![[운영체제] 페이징을 통한 가상 메모리 관리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcn2zfx%2Fbtsl1ghypZJ%2Fy4wXnOmQch4fmrbzH8s62K%2Fimg.png)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 연속 메모리 할당의 문제점은 아래와 같다. 외부 단편화 물리 메모리의 크기보다 크기가 큰 프로세스 실행 불가 예를 들어 램 용량이 4GB인데 프로세스 크기가 5GB면 실행할 수 없는 것이다. 하지만 가상 메모리(virtual memory)를 이용하면 이게 가능하다. 또한 외부 단편화 문제도 해결할 수 있다. 가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 가상 메모리 관리 기법에는 페이징과 세그멘테이션이 있지만, 페이징 기법이 일반적으로 더 많이 사용된다. 따라서 이 글에서는 ..