[OSTEP] 메모리 가상화 정리(12장~13장)
·
독서/OSTEP
☑️ 12. 메모리 가상화에 대한 대화응용 프로그램이 생성하는 모든 주소는 가상주소다.운영체제는 프로세스에게 환상을 전달한다.어떤 환상을 전달하는가? -> 프로세스가 자신만의 전용 메모리를 가진다.왜? -> 쉬운 시스템을 제공하기 위해서각 프로세스에게 코드와 데이터를 저장할 수 있다는 연속된 주소 공간을 가지고 있다는 환상을 제공한다.고립과 보호 개념을 위해서 제공하는 사유도 있다.☑️ 13. 주소 공간의 개념❎ 13.2 멀티프로그래밍과 시분할시간의 흐름에 따라서 CPU의 이용률이 증가했다.이로 인해서 효율성 개선이 중요해졌다.시분할(Time-Sharing) 기법이 등장하고 대화식 이용(interactivity)의 개념이 부각되었다.시분할은 하나의 프로세스를 짧은 시간 동안 실행시키는 방법이다.프로세스는..
[CSAPP] Chapter 1. 컴퓨터 시스템으로의 여행
·
독서/CSAPP
🔖 1.1 정보는 비트와 컨텍스트로 이루어진다.// Hello.c#include int main(void){ printf("Hello, World!"); return 0;} 위와 같은 내용을 가진 'Hello.c' 파일이 있다. 이때, 'Hello.c' 파일은 텍스트 파일이다. 텍스트 파일은 내부적으로 0과 1인 Binary로 이루어져 있다. 우리가 읽을 수 있는 문자의 형태로 나타나게 하기 위해서 인코딩(Encoding)을 한다. 인코딩 과정을 통해서 우리가 이해할 수 없는 Binary 데이터를 친숙한 문자의 형태로 변경할 수 있다. 그리고 이런 텍스트 파일의 개념과는 반대로 컴퓨터나 다른 Player 성격(비디오 플레이어와 같이 확장자를 읽어 들이는 프로그램)의 프로그램이 읽기 쉽게 변경..
[Effective C#] 불필요한 객체를 만들지 말라
·
독서/Effective C#
01. 반복되는 객체는 미리 생성하자C#에서 힙에 객체의 생성과 삭제하는 작업은 많은 코스트를 요구하는 작업이다. 아무리 가비지 컬렉터를 통해서 효율적인 메모리 관리가 일어난다고 해도 무거운 일은 존재한다. 상대적으로 많은 프로세서 시간을 사용하기 때문에 이러한 요소를 최소화 시키는 것이 중요하다. private void Update() { string test = "abcdefg"; AnythingMethod(test);} 위 코드는 Unity의 이벤트 메서드인 Update에서 string 타입의 test를 지속적으로 생성하게 된다. 이러한 경우 string 타입의 변수를 미리 작성하고 재사용 하는 것으로 객체의 추가적인 생성과 삭제를 줄일 수 있다.
[Effective C#] 초기화 코드가 중복되는 것을 최소화하라
·
독서/Effective C#
01. 공통 생성자를 추가하라public class Example01{ private int count; private string name; public Example01() : this(0, string.Empty) { } public Example01(int count) : this(count, string.Empty) { } public Example01(int count, string name) { this.count = count; this.name = name; }} 위 코드와 같이 필요에 따라서 생성자를 나누고 공통적으로 취합하는 생성자가 있다면 코드의 양을 최소화 시킬 수 있다.  02. C# 4.0 이후의 선택적 매개..
[Effective C#] 정적 클래스 멤버를 올바르게 초기화하라
·
독서/Effective C#
01. 정적 생성자정적 생성자는 타입 내에 정의된 모든 메서드, 변수, 속성에 최초로 접근하기 전에 호출되는 메서드다. 정적 변수를 초기화 하기 위해서 인스턴스 생성자, 혹은 private 메서드, 다른 관용구를 사용해서는 안된다. 정적 필드를 초기화하는 과정이 매우 크고 복잡하다면 Lazy를 사용해서 지연 초기화를 사용할 수 있다. 단, 간단히 초기화하는 경우라면 정적 생성자를 사용하는 것 보다 멤버 초기화 구문을 통해서 초기화하는 것이 더 좋다. 01. A. 특징멤버 초기화 구문과 마찬가지로 정적 멤버 초기화 구문도 정적 생성자가 호출되기 전에 실행되고 베이스 클래스의 정적 생성자 전에 실행된다. 앱도메인 내에서 CLR이 특정 타입에 접근하는 경우 정적 생성자를 우선 호출한다. 모든 타입은 정적 생성..
[Effective C#] 할당 구문보다 멤버 초기화 구문이 좋다
·
독서/Effective C#
01. 멤버 초기화 구문// 멤버 초기화 구문private List example = new List(); 책에서 멤버 초기화 구문이라고 나오는 내용은 변수의 선언부에서 초기화를 하라는 것과 동일한 의미로 사용된다. 선언부에서 초기화를 하면 생기는 장점은 생성자보다 빠르게 초기화되기 때문에 이루어진다는 점이 있다. 01. A. 사용을 고려하지 않아도 되는 곳객체를 0 or Null로 초기화하는 경우CLR은 객체 생성 시 객체의 값을 0이나 Null로 초기화를 하기 때문에 다시 초기화를 할 필요가 없다.동일한 객체를 반복해서 초기화하는 경우새로운 객체를 생성한 후에 다시 객체를 추가 생성하는 것은 기존 객체를 가비지로 만드는 것이다. 그렇기 때문에 초기화를 한 번만 하는 것이 바람직하다.예외 처리가 반드시..