![[운영체제] 페이징의 쓰기 시 복사와 계층적 페이징](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FCVafi%2Fbtsl9vqO2fq%2FAAAAAAAAAAAAAAAAAAAAAOK_jjBq2VNOHsNZiDbv-wAhBoXWMS0md_xCpyLmRWi4%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DxCDgmKd1FfDaN9bDq4Rg496Rtlc%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 쓰기 시 복사(copy on write) 전통적인 관점에서 fork()함수를 이용하여 프로세스를 복제하면 코드 및 데이터 영역을 비롯한 모든 자원이 복제되어 서로 다른 메모리 공간에 적재된다. 각 프로세스의 페이지 테이블은 자신의 고유한 페이지가 할당된 프레임을 가리킨다. 이러한 복사 작업은 프로세스 생성 시간을 늦출 뿐만 아니라 불필요한 메모리 낭비를 야기한다. 쓰기 시 복사를 이용하면 각 프로세스(부모 프로세스와 자식 프로세스)는 동일한 프레임을 가리킨다. 이로써 굳이 부모 프로세스의 메모리 공간을 복사하지 않고도 동일한 코드 및 데이터 영역을 가리킬 수 있다. 만일..
![[운영체제] 페이지 교체와 프레임 할당](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FJowXa%2Fbtsl0MOD6u2%2FAAAAAAAAAAAAAAAAAAAAADACMH0p1QA4pCT6tg83wNB-BLwqxb4BMwCtw-aeB2zH%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DBaBfkHRCC2TKEz9W9MjKUzRr5yY%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 운영체제는 한정된 물리적 메모리 용량 때문에, 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고, 프로세스들에게 적절한 수의 프레임을 할당해야 한다. 요구 페이징 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법 요구되는 페이지만 적재하는 기법 요구 페이징은 아래의 과정으로 흘러간다. 순수 요구 페이징(pure demand paging) 아무런 페이지도 메모리에 적재하지 않은 채 일단 프로세스 실행 프로세스의 첫 명령어부터 페이지 폴트가 발생 어느 정도 시간이 지난 후부터 페이지 폴트 발생 빈도가 적어짐 요구 페이징이 안정적으로 ..
![[운영체제] 페이징을 통한 가상 메모리 관리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fcn2zfx%2Fbtsl1ghypZJ%2FAAAAAAAAAAAAAAAAAAAAAB3i1VLj8YAzOcW3pe9rbMI_zg-13cMaUCfYZvAq8lc1%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3D8dHmgmvW2s2yR6ny2cc8Evx9LU8%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 연속 메모리 할당의 문제점은 아래와 같다. 외부 단편화 물리 메모리의 크기보다 크기가 큰 프로세스 실행 불가 예를 들어 램 용량이 4GB인데 프로세스 크기가 5GB면 실행할 수 없는 것이다. 하지만 가상 메모리(virtual memory)를 이용하면 이게 가능하다. 또한 외부 단편화 문제도 해결할 수 있다. 가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 가상 메모리 관리 기법에는 페이징과 세그멘테이션이 있지만, 페이징 기법이 일반적으로 더 많이 사용된다. 따라서 이 글에서는 ..
![[운영체제] 연속 메모리 할당](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FzFyHh%2Fbtsl6VJE9tk%2FAAAAAAAAAAAAAAAAAAAAACRwlj103Y--J8QeOwf9JwR5KdQCKHyTN1qxWd3evtox%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DHzVHMDto%252FLYkOO%252BvWqeJfLK1UFQ%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당 방식이라고 한다. 스와핑(Swaping) 현재 실행되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고, 메모리에 생긴 빈 공간에 새로운 프로세스를 적재시키는 방법 스왑 영역(swap space) : 프로세스들이 쫓겨나서 머무는 보조기억장치의 일부 영역 스왑 아웃(swap out) : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인(swap in) : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 스왑 아웃되었던 프로세스가 다시 스왑 인이 될 때는 이전 물리 ..
![[운영체제] 교착 상태(Deadlock) 해결 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbu7HHD%2Fbtsl1IYwoYb%2FAAAAAAAAAAAAAAAAAAAAAG6wKCtyWfC9QB1xfO-yduKXwtH1zpVQ065v7msxubYi%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DYyRzm3HFK7tlS2y2Lpex8MUNLLQ%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 아래는 모두 프로세스를 예로 들었지만 스레드에서도 똑같이 적용된다. 교착 상태가 발생할 조건에는 아래와 같이 네 가지가 있다. 아래의 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다. 상호 배제(mutual exclusion) : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 점유와 대기(hold and wait) : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태 비선점(nonpreemptive) : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지..
![[운영체제] 교착 상태(Deadlock)의 개념](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbqjTtU%2FbtslZ15SQeK%2FAAAAAAAAAAAAAAAAAAAAADwX_VcWOdNQ7xDj4PmIdjWwYVnnzzakr79wFansAHZl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1759244399%26allow_ip%3D%26allow_referer%3D%26signature%3DfmwElGdx%252B8vEGX9kP2oYtKqMpuc%253D)
이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 교착 상태(Deadlock) 교착 상태의 정의 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상 아래는 모두 프로세스를 예로 들었지만 스레드에서도 똑같이 적용된다. 예를 들어, 아래와 같은 상황을 교착 상태라고 말할 수 있다. 게임 프로세스는 자원 A를 점유한 채 웹 브라우저 프로세스가 점유하고 있는 자원 B의 사용을 기다림 웹 브라우저 프로세스는 자원 B를 점유한 채 게임 프로세스의 자원 A 사용이 끝나길 기다림 또 다른 교착상태의 예를 들면 식사하는 철학자 문제가 있다. 식사하는 철학자 문제에서 한두 명의 철학자가 식사를 할 때는 문제가 되지 않지만, 모든 ..
2023.07.03 - [프로그래밍 언어] - 카멜 케이스, 파스칼 케이스, 스네이크 케이스 카멜 케이스, 파스칼 케이스, 스네이크 케이스 카멜 케이스(Camel Case) 복수의 단어로 구성된 복합어에서 각 단어를 표기할 때 첫 문자는 소문자로 시작하며 띄어쓰기 대신 대문자로 단어를 구분하는 방식 예를 들어, camelCase, sendMessage, phoneNumber rebugs.tistory.com 자바의 공통 명명 규칙 예약어는 사용 불가 특수문자는 '_'와 '$'만 허용 대소문자가 구분되어야 하고, 길이에 제한 없음 파스칼 표기법과 카멜 표기법을 사용 반의어는 반드시 대응하는 개념으로 사용 패키지 : Lower Case 클래스 : Pascal Case 메소드 : Camel Case 변수 : ..
카멜 케이스(Camel Case) 복수의 단어로 구성된 복합어에서 각 단어를 표기할 때 첫 문자는 소문자로 시작하며 띄어쓰기 대신 대문자로 단어를 구분하는 방식 예를 들어, camelCase, sendMessage, phoneNumber 파스칼 케이스(Pascal Case) 복수의 단어로 구성된 복합어에서 각 단어를 표기할 때 첫 문자는 모두 대문자로 단어를 표기하는 방식 예를 들어, PascalCase, SendMessage, PhoneNumber 스네이크 케이스(Snake Case) 복수의 단어로 구성된 복합어에서 각 단어를 표기할 때 모두 소문자로 표기하고 띄어쓰기 대신 언더바(_)로 표기 예를 들어, snake_case, send_message, phone_number 어퍼 케이스(Upper Ca..