목록Computer/CS (39)
Machineboy空
프로그래밍(Programming)을 배운다는 것은 컴퓨팅 사고력(Computing thinking)이라는 사고 체계를 배우는 것 Wing, Jeanette M(2006) 프로그래밍컴퓨터 프로그램을 이용하여 문제를 해결하는 것컴퓨터에게 일을 시킬 수 있는 방법론문제를 분석하고 해답을 도출해 가는 과정에서 컴퓨팅 사고력을 사용하는 것컴퓨팅 사고력은 이렇듯 우리를 둘러싼 현상을 주의 깊게 분석하여 컴퓨터와 협업을 해서 풀 만한 문제와 그렇지 않은 문제를 가려내는 작업부터 시작한다.분해(Decomposition)패턴인식(Pattern Recognition)/ 데이터 표현(Data Representation)일반화(Generalization) / 추상화(Abstraction)알고리즘(Algorithm)(ex) 퀴..
파일 시스템이란 파일과 디렉터리를 보조기억 장치에 일목요연하게 저장하고, 접근할 수 있도록 하는 운영체제의 내부 프로그램. 파일 시스템이 파일과 디렉터리를 보조기억장치에 할당하고 접근하는 방법을 알아본다. 정말 다양한 파일 시스템이 있는데, 대표적으로 FAT 파일 시스템, 유닉스 파일 시스템을 학습할 것 하나의 컴퓨터에서 여러 파일 시스템을 사용할 수도 있음 파티셔닝(partitioning)과 포매팅(formatting) 이제 막 공장에서 생산되어 한 번도 사용된 적 없는 새 하드 디스크 / SSD는 파티셔닝과 포매팅을 하기 전까지 사용할 수 없다. 즉, 파티셔닝과 포매팅을 해야 파일시스템을 통해 보조기억장치에 할당, 접근할 수 있다. 파티셔닝(partitioning) : 저장 장치의 논리적인 영역을 구..
파일 시스템 (file system) 파일과 디렉터리를 관리하는 운영체제 내의 프로그램 파일과 디렉터리를 다루어주는 프로그램 한 컴퓨터 내에 여러가지 파일 시스템을 사용할 수 있다 파일과 디렉터리는 데이터 관점에서만 보자면 보조기억장치 내의 데이터 덩어리일 뿐 하지만 운영체제가 이것을 일목 요연하게 정리해줌 파일과 디렉터리 보조기억 장치의 데이터 덩어리 파일(file) 정의 보조기억장치에 저장된 관련 정보의 집합 의미있고 관련있는 정보를 모은 논리적 단위 파일을 이루는 정보 파일을 실행하기 위한 정보 + 부가 정보(=속성,메타 데이터) 파일의 유형 힌트를 주는 확장자. 파일 연산을 위한 시스템 호출 파일을 다루는 모든 작업들은 전부 다 운영체제에 의해서 이루어진다. 즉, 어떤 응용프로그램도 임의로 파일에..
페이징을 통해 물리 메모리보다 큰 프로세스를 실행할 수 있지만 그럼에도 물리 메모리의크기는 한정되어 있다. 따라서 운영체제 입장에서는 두 가지 문제를 해결해야 한다. 기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내고 ⭢ 페이지 교체 알고리즘 프로세스들에게 적절한 수의 프레임을 할당해야한다. ⭢ 프레임 할당 요구 페이징(Demand Paging) 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법 요구되는 페이지만 적재하는 기법 * 페이지 폴트(page fault) : 유효 비트가 0인 페이지에 접근하려고 하면? 페이지 폴트(page fault)라는 인터럽트가 발생 * 순수 요구페이징(Pure Demand Paging) : 아무런 페이지도 메모리에 적재하지 않은 채 ..
페이징을 통해 외부단편화 문제를 해결할 수 있다 이외에도 페이징의 이점들이 있다. 쓰기 시 복사 (Copy on Write) 이론적인 fork() *부모 시스템이 복제되어 자식 시스템으로 사용되는 것이 fork 프로세스는 기본적으로 자원을 공유하지 않는다 부모 프로세스가 적재된 별도의 공간에 자식 프로세스가 통째로 복제되어 적재 (자식) 프로세스 생성 시간 지연, 메모리 낭비 쓰기 시 복사 (copy on write) 부모 프로세스와 동일한 자식 프로세스가 복제되어 생성되면 자식 프로세스는 부모 프로세스와 동일한 프레임을 가리킴(쓰기 작업없다면 이상태 유지) 부모 프로세스/자식 프로세스 둘 중 하나가 페이지에 쓰기 작업 수행 시 해당 페이지는 별도의 공간으로 복제 프로세스 생성 신간 절약, 메모리 절약 ..
연속 메모리 할당의 두 가지 문제점 외부 단편화 (빈 공간들이 파편화되어 있어 활용도가 낮은 것) 물리 메모리보다 큰 프로세스 실행 불가 가상 메모리란? 실행하고 싶은 프로그램을 일부만 메모리에 적재해서 실제 물리 메모리 보다 큰 프로세스을 실행할 수 있는 기술 방법: 페이징, 세그멘테이션 페이징(Paging) 외부 단편화가 발생했던 근본적인 문제? 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문 모든 프로세스의 크기가 같다면, 외부단편화가 발생하지 않을 것 따라서, 프로세스를 일정 크기로 자르고 이를 메모리에 불연속적으로 할당할 수 있다면? 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정 단위..
가장 일반적인 메모리 관리 방식 : 연속 메모리 할당 연속메모리 할당에서 프로세스 배치 방식 연속 메모리 할당의 부작용 운영체제의 메모리 관리 기능 중 스와핑(Swap) 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역(swap 영역)으로 쫓아내고 그렇게 생긴 빈 공간에 새 프로세스를 적재 효율적으로 메모리 관리 swap out: 메모리에서 스왑영역으로 쫓아내는 것 swap in: 스왑 영역에서 메모리로 다시 적재 프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기 일 때도 프로세스를 실행할 수 있다. 연속 메모리 할당 프로세스는 메모리의 빈 공간에 할당되어야 한다. 빈 공간이 여러 개 있다면? 연속 메모리 할당의 방법: 어떤 빈 공간에 어떻게 할당할지 최초 적합(first-fit) 빈공..
교착 상태 해결(3) 예방 회피 검출 후 회복 1) 교착 상태 예방 애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기) 중 하나를 없애버리기 상호 배제를 없앤다면? 모든 자원을 공유 가능하게 만든다? 이론적으로는 가능하지만 현실적으로는 불가 점유와 대기를 없앤다면? 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분 단점: 자원의 활용률을 낮출 수 있는 방식 비선점을 없앤다면? 선점이 가능한 자원 (ex.CPU)에 한해 효과적 모든 자원이 선점 가능한 것은 아니다 프린터 등 원형 대기를 없앤다면? 자원에 번호를 붙이고 오름차순으로 할당하면 원형 대기는 발생하지 않는다 한계 자원에 번호를 붙이는 것은 어려운 작업 어떤 자원에 어떤..