본문 바로가기
반응형

65

Effective C# - Item31 시퀀스에 사용할 수 있는 조합 가능한 API를 작성하라 반복 구문이 필요한 경우 단일 요소를 처리하기보다 여러 요소로 구성된 시퀀스를 처리하는 알고리즘을 작성하기 위한 경우가 대부분이다. 반복 구문으로 작업을 진행하는 경우 효율성에 문제가 있다. 전체 컬렉션을 대상으로 단 하나의 작업만을 수행하는 경우는 거의 없고 최초 원본 컬렉션에 대해 다양한 작업을 여러 단계를 걸쳐 수행한 후에야 비로소 원하는 결과를 얻을 수 있는 경우가 대부분이기 때문이다. 대안 개별 요소에 대해 수행해야 하는 모든 작업을 분리된 메서드로 작성한 후 루프 내에서 이 메서드를 호출하는 방법이 있다. 이렇게 코드를 작성하면 메서드의 재사용 가능성이 낮아진다. 여러 단계의 작업을 단번에 수행하도록 작성된 메서드보다 각각의 작업을 개별적으로 수행하는 메서드들이 재사용 가능성이 훨씬 높기 때문.. 2024. 3. 8.
운영체제 - 파일 시스템(파티셔닝, 포매팅), 파일 할당 방법(연속 할당, 연결 할당, 색인 할당) FAT 파일 시스템, 유닉스 파일 시스템 파일 시스템 파일과 디렉터리를 보조기억장치에 할당하고 접근 할 수 있게 하는 운영체제 내부 프로그램이다. 이러한 피일 시스템은 다양한 종류가 있고 하나의 컴퓨터에서 여러 파일 시스템을 사용할 수 있다. 파티셔닝과 포매팅 만약 막 공장에서 생산되어 한 번도 사용된 적이 없는 새 하드 디스크 또는 SSD가 있다고 가정해보자 이 보조 기억장치는 파티셔닝, 포매팅을 하기 전까지는 사용할 수 없다. 파티셔닝(Partitioning) 저장 장치의 논리적인 영역을 구획하는 작업이다. 파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션이라고 한다. 포매팅(Formatting) 파일 시스템을 설정하여 어떤 방식으로 파일을 관리할지 결정하고 새로운 데이터를 쓸 준비를 하는 작업을 의미한다. 즉 어떤 종류의 파일 시스템을.. 2024. 3. 8.
운영체제 - 파일과 디렉터리(파일,확장자,속성,디렉터리,경로,절대경로,상대경로) 파일(File) 보조기억장치에 저장된 관련 정보의 집합이다. 의미 있고 관련 있는 정보를 모은 논리적인 단위이다. 파일의 정보에는 파일을 실행하는 정보와 부가 정보(= 속성, 메타 데이터)가 있다. 01 파일 속성과 유형 파일 속성 중 파일 유형은 운영체제가 인식하는 파일 종류이다. 같은 이름의 파일일지라도 유형이 다르면 실행 양상도 달라진다. 파일 유형을 알리기 위해 가장 흔히 사용하는 방식은 파일 이름 뒤에 붙는 확장자(Extension)을 이용하는 것이다. 디렉터리 파일들을 일목요연하게 관리하기 위해 디렉터리(Directory)를 이용할 수 있다. 윈도우 운영체제에서는 디렉터리를 폴더(Folder)라고 부른다. 01 1단계 디렉터리(Single-Level Directory) 옛날 운영체제에서는 하나.. 2024. 3. 7.
Effective C# - Item 30 루프보다 쿼리 구문이 낫다 for, while, do/while, foreach등의 다양한 반복 구문이 있는데 이는 일상적인 개발에는 부족함이 없다. 하지만 쿼리 구문을 사용하는 것이 반복문을 사용하는 것보다 더 나은 경우가 있다. 쿼리 구문을 사용할시 장점 LINQ의 지연 실행(Lazy Evaluation) 쿼리 구문을 이용하면 질의의 내용을 구성할 수 있을 뿐 아니라 개별 항목에 대해 수행하려는 작업의 수행 시키를 연기할 수 있다. 쿼리 구문이나 메서드 호출 구문 중 어떤 방식을 쓰더라도 이러한 장점은 동일하다. 그러므로 쿼리가 정의된 시점에서는 실제로 데이터가 계산되지 않고 필요한 시점에서만 연산이 수행된다. 이에 따라 메모리와 성능을 효율적으로 관리할 수 있게 해준다. 가독성 및 유지 보수성 쿼리 구문이나 메서드 호출 구문.. 2024. 3. 7.
운영체제 - 가상메모리, 페이징, 페이지 테이블, PTBR, TLB 연속 메모리 할당의 두 가지 문제점 외부 단편화와 물리 메모리보다 큰 프로세스 실행 불가 가상메모리(Virtual Memory) 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술이다. 이를 가능하게 하는 가상 메모리 관리 기법에는 크게 페이징과 세그멘테이션이 있다. 페이징이란? 외부 단편화가 생긴 근본적인 이유는 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문이다. 프로세스를 일정 크기로 자르고 이를 메모리에 불연속적으로 할당할 수 있다면 어떨까? 외부 단편화가 발생하지 않는다. 페이징(Paging) 프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고 메모리의 물리 주소 공간을 프레임(frame)이.. 2024. 2. 26.
운영체제 - 연속 메모리 할당(스와핑, 최초 적합, 최적 접합, 최악 접합, 외부단편화) 연속 메모리 할당 프로세스에 연속적인 메모리 공간을 할당 스와핑(Swapping) 메모리에 적재된 프로세스들 중에 현재 사용되지 않는 프로세스들을 보조기억장치의 일부 영역으로 쫓아내고 그렇게 생긴 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식을 스와핑이라고한다. 01 스왑 영역(Swap Space) 프로세스드이 쫓겨나는 보조기억 장치의 일부 영역 02 스왑 이웃(Swap-Out) 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것 03 스왑 인(Swap-In) 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 스와핑을 이용하게 된다면 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시 실행 할 수 있다. 메모리 할당 프로세스는 .. 2024. 2. 26.
반응형