컴퓨터 구조 & 운영체제/운영체제17 [운영체제] 파일 시스템(File System) 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파티셔닝(partitioning)과 포매팅(formatting) 파티셔닝(파티션을 나누는 작업) : 저장 장치의 논리적인 영역을 구획하는 작업 파티션 : 파티셔닝 작업을 통해 나누어진 하나의 영역 포매팅 : 포맷을 하는 작업, 어떤 종류의 파일 시스템을 사용할지 결정하고 새로운 데이터를 쓸 준비를 하는 작업 포맷(포매팅)의 종류 저수준 포매팅 : 저장 장치를 생성할 당시 공장에서 수행되는 물리적인 포매팅 논리적 포매팅 : 파일 시스템을 생성하는 포매팅 이 글에서 포매팅은 논리적 포매팅을 뜻한다. 파일 할당 방법 포매팅까지 끝난 하드 디스크에 파일을 저장하기 운영체제는 파.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 11. [운영체제] 파일과 디렉터리 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 파일과 디렉터리 모두 운영체제 내부 파일 시스템이 관리하는 존재들이다. 보조기억장치의 데이터 덩어리 파일(file) 보조기억장치에 저장된 관련 정보의 집합 의미 있고 관련 있는 정보를 모은 논리적 단위 파일을 이루는 정보 파일 이름 파일을 실행하기 위한 정보 파일 관련 부가 정보(=속성(attribute) 또는 메타데이터(metadata)) 윈도우 운영체제에서 임의의 파일을 선택하고 마우스 우클릭을 하고 속성 버튼을 누르면 나타나는 정보가 파일 속성이다. 파일 속성과 유형 유형 : 운영체제가 인식하는 파일 종류(확장자)를 나타냄 파일 연산을 위한 시스템 호출 파일을 다루.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 10. [운영체제] 페이징의 쓰기 시 복사와 계층적 페이징 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 쓰기 시 복사(copy on write) 전통적인 관점에서 fork()함수를 이용하여 프로세스를 복제하면 코드 및 데이터 영역을 비롯한 모든 자원이 복제되어 서로 다른 메모리 공간에 적재된다. 각 프로세스의 페이지 테이블은 자신의 고유한 페이지가 할당된 프레임을 가리킨다. 이러한 복사 작업은 프로세스 생성 시간을 늦출 뿐만 아니라 불필요한 메모리 낭비를 야기한다. 쓰기 시 복사를 이용하면 각 프로세스(부모 프로세스와 자식 프로세스)는 동일한 프레임을 가리킨다. 이로써 굳이 부모 프로세스의 메모리 공간을 복사하지 않고도 동일한 코드 및 데이터 영역을 가리킬 수 있다. 만일.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 9. [운영체제] 페이지 교체와 프레임 할당 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 운영체제는 한정된 물리적 메모리 용량 때문에, 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고, 프로세스들에게 적절한 수의 프레임을 할당해야 한다. 요구 페이징 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법 요구되는 페이지만 적재하는 기법 요구 페이징은 아래의 과정으로 흘러간다. 순수 요구 페이징(pure demand paging) 아무런 페이지도 메모리에 적재하지 않은 채 일단 프로세스 실행 프로세스의 첫 명령어부터 페이지 폴트가 발생 어느 정도 시간이 지난 후부터 페이지 폴트 발생 빈도가 적어짐 요구 페이징이 안정적으로 .. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 8. [운영체제] 페이징을 통한 가상 메모리 관리 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 연속 메모리 할당의 문제점은 아래와 같다. 외부 단편화 물리 메모리의 크기보다 크기가 큰 프로세스 실행 불가 예를 들어 램 용량이 4GB인데 프로세스 크기가 5GB면 실행할 수 없는 것이다. 하지만 가상 메모리(virtual memory)를 이용하면 이게 가능하다. 또한 외부 단편화 문제도 해결할 수 있다. 가상 메모리는 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 가상 메모리 관리 기법에는 페이징과 세그멘테이션이 있지만, 페이징 기법이 일반적으로 더 많이 사용된다. 따라서 이 글에서는 .. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 7. [운영체제] 연속 메모리 할당 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당 방식이라고 한다. 스와핑(Swaping) 현재 실행되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고, 메모리에 생긴 빈 공간에 새로운 프로세스를 적재시키는 방법 스왑 영역(swap space) : 프로세스들이 쫓겨나서 머무는 보조기억장치의 일부 영역 스왑 아웃(swap out) : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 스왑 인(swap in) : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 스왑 아웃되었던 프로세스가 다시 스왑 인이 될 때는 이전 물리 .. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 6. [운영체제] 교착 상태(Deadlock) 해결 방법 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 아래는 모두 프로세스를 예로 들었지만 스레드에서도 똑같이 적용된다. 교착 상태가 발생할 조건에는 아래와 같이 네 가지가 있다. 아래의 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다. 상호 배제(mutual exclusion) : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태 점유와 대기(hold and wait) : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태 비선점(nonpreemptive) : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 5. [운영체제] 교착 상태(Deadlock)의 개념 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 교착 상태(Deadlock) 교착 상태의 정의 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상 아래는 모두 프로세스를 예로 들었지만 스레드에서도 똑같이 적용된다. 예를 들어, 아래와 같은 상황을 교착 상태라고 말할 수 있다. 게임 프로세스는 자원 A를 점유한 채 웹 브라우저 프로세스가 점유하고 있는 자원 B의 사용을 기다림 웹 브라우저 프로세스는 자원 B를 점유한 채 게임 프로세스의 자원 A 사용이 끝나길 기다림 또 다른 교착상태의 예를 들면 식사하는 철학자 문제가 있다. 식사하는 철학자 문제에서 한두 명의 철학자가 식사를 할 때는 문제가 되지 않지만, 모든 .. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 4. [운영체제] 프로세스와 스레드의 동기화 기법(뮤텍스 락, 세마포, 모니터) 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 동시다발적으로 실행되는 프로세스와 스레드들은 공동의 목적을 수행하기 위해 서로 협력하며 영향을 주고받기도 한다. 이렇게 협력하여 실행되는 프로세스와 스레드들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 되어야 한다. 프로세스 동기화란 프로세스 사이에 동기화를 하는 것을 말한다. 현재는 대부분 스레드 기준으로 문맥 교환이 일어나기 때문에 스레드 동기화라고도 불린다. 이 글에선 동기화 기법의 전체적 개념을 다루므로 프로세스 동기화와 스레드 동기화의 개념을 구분 짓지 않았으면 좋겠다. 프로세스뿐만 아니라 스레드도 동기화 대상이다. 정확히 말하면 실행의 흐름을.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 3. [운영체제] 프로세스와 스레드의 동기화 개념 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 동시다발적으로 실행되는 프로세스와 스레드들은 공동의 목적을 수행하기 위해 서로 협력하며 영향을 주고받기도 한다. 이렇게 협력하여 실행되는 프로세스와 스레드들은 실행 순서와 자원의 일관성을 보장해야 하기에 반드시 동기화가 되어야 한다. 프로세스 동기화란 프로세스 사이에 동기화를 하는 것을 말한다. 현재는 대부분 쓰레드 기준으로 문맥 교환이 일어나기 때문에 스레드 동기화라고도 불린다. 이 글에선 동기화의 전체적 개념을 다루므로 프로세스 동기화와 스레드 동기화의 개념을 구분 짓지 않았으면 좋겠다. 프로세스뿐만 아니라 스레드도 동기화 대상이다. 정확히 말하면 실행의 흐름을 갖는.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 2. [운영체제] CPU 스케줄링 알고리즘 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 선입선출(FCFS:First Come First Served) 스케줄링 비선점형방식 단순히 준비 큐에 삽입된 순서대로 처리하는 스케줄링 먼저 CPU를 요청한 프로세스부터 CPU할당 프로세스들이 기다리는 시간이 매우 길어질 수 있다. (=호위효과) 최단 작업 우선 스케줄링(SJF:Shortest Job First) 선점형이나 비선점형 둘다 구현될 수 있지만 보통 비선점형으로 구현 호위 효과를 줄이기위해 고안된 스케줄링 실행 시간이 가장 짧은 프로세스에 우선순위를 매긴다. CPU 사용이 긴 프로세스는 나중이 실행, CPU 사용 시간이 짧은 프로세스를 먼저 실행 라운드 로빈(.. 컴퓨터 구조 & 운영체제/운영체제 2023. 7. 1. [운영체제] CPU 스케줄링의 개념 이 글은 혼자 공부하는 컴퓨터 구조 + 운영체제 (저자 : 강민철)의 책과 유튜브 영상을 참고하여 개인적으로 정리하는 글임을 알립니다. 모든 프로세스들은 CPU를 필요로 하고, 모든 프로세스들은 먼저 CPU를 사용하고 싶어 한다. 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 CPU 스케줄링이라고 한다. CPU 스케줄링은 컴퓨터 성능과도 직결되는 중요한 문제이다. 프로세스 우선순위 단순히 생각하면 CPU를 사용하고 싶어 하는 프로세스들을 줄 세워서 차례대로 쓰게 하면 된다. 하지만 프로세스마다 우선순위(priority)가 다르기 때문에 적절하지 못한 방법이다. 우선순위가 높은 프로세스는 대표적으로 입출력 작업이 많은 프로세스이다. 입출력 작업이 많은 프로세스(=입출력 집중 프로.. 컴퓨터 구조 & 운영체제/운영체제 2023. 6. 30. 이전 1 2 다음