본문 바로가기

공부 기록

(319)
[OS/공룡책] Chapter 2. 운영체제 구조 - 운영체제 빌딩과 부팅, 운영체제 디버깅 운영체제 빌딩과 부팅 - 일반적으로 운영체제는 다양한 주변장치 구성을 가진 모든 종류의 컴퓨터에서 실행되도록 설계된다. 운영체제 생성 - 운영체제를 처음부터 생성(또는 빌딩)하는 경우 다음 절차를 밟아야 한다. 1. 운영체제 소스 코드를 작성한다.(또는 이전에 작성된 소스 코드를 확보한다.) 2. 운영체제가 실행될 시스템의 운영체제를 구성한다. 3. 운영체제를 컴파일 한다. 4. 운영체제를 설치한다. 5. 컴퓨터와 새 운영체제를 부팅한다. - 리눅스 시스템을 처음부터 빌드하는 방법 1. http://www.kernel.org에서 서 Linux 소스 코드를 다운로드한다. 2. "make menuconfig" 명령어로 커널을 구성한다. => .config 구성 파일을 생성한다. 3. "make" 명령어로 메..
[OS/공룡책] Chapter 2. 운영체제 구조 - 운영체제 구조 모놀리식 구조 - 운영체제를 구성하는 가장 간단한 구조는 구조가 아예 없는 것이다. => 커널의 모든 기능을 단일 주소 공간에서 실행되는 단일 정적 이진 파일에 넣는 것이다. - 모놀리식 구조는 운영체제를 설계하는 일반적인 기술이다. - 제한적인 구조를 가진 운영체제의 예 => 최초의 UNIX 운영체제 => 커널, 시스템 프로그램으로 구성됨 - 모놀리식 커널의 명백한 단순성에도 불구하고 이 구조는 구현 및 확장하기 어렵다. - 성능 면에서 뚜렷한 이점이 있다. => 시스템 콜 인터페이스에는 오버헤드가 거의 없고 커널 안에서의 통신 속도가 빠르다. 계층적 접근 - 시스템의 한 부분을 변경하면 다른 부분에 광범위한 영향 => 모놀리식 접근법은 밀접하게 결합된 시스템으로 불린다. - 시스템은 다양한 방식으로 ..
[이펙티브 자바 3/E] 아이템10 - equals는 일반 규약을 지켜 재정의하라 equals 메서드는 재정의하지 않는 것이 최선 - 아래에 열거한 상황 중 하나에 해당한다면 재정의하지 않는 것이 최선이다. 1. 각 인스턴스가 본질적으로 고유하다. => 값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스가 여기에 해당한다. 2. 인스턴스의 '논리적 동치성(logical equality)'을 검사할 일이 없다. 3. 상위 클래스에서 재정의한 equals가 하위 클래스에도 딱 들어맞는다. 4. 클래스가 private이거나 package-private이고 equals 메서드를 호출할 일이 없다. - equals가 실수로라도 호출되는 걸 막고 싶다면 아래와 같이 구현하자. @Override public boolean equals(Object o) { throw new AssertionE..
[이펙티브 자바 3/E] 아이템9 - try-finally보다는 try-with-resources를 사용하라 - try-with-resources 구조를 사용하려면 해당 자원이 AutoCloseable 인터페이스를 구현해야 한다. try-finally 구조를 사용한 예 static String firstLineOfFile(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); } } try-with-resources 구조를 사용한 예 static String firstLineOfFile(String path) throws IOException { try (BufferedReader br = new Buff..
[이펙티브 자바 3/E] 아이템8 - finalizer와 cleaner 사용을 피하라 finalizer와 cleaner - 예측할 수 없고, 느리고, 일반적으로 불필요하다. - 즉시 수행된다는 보장이 없다. => 즉, 제때 실행되어야 하는 작업을 절대 할 수 없다. - 심각한 성능 문제도 동반한다. - finalizer를 사용한 클래스는 finalizer 공격에 노출되어 심각한 보안 문제를 일으킬 수도 있다. - 자바 언어 명세는 finalizer와 cleaner의 수행 시점뿐 아니라 수행 여부조차 보장하지 않는다. ===> 상태를 영구적으로 수정하는 작업에서는 절대 finalizer나 cleaner에 의존해서는 안 된다. finalizer와 cleaner를 대신해줄 묘안 - AutoCloseable을 구현하고, close 메서드를 호출한다.(일반적으로 예외가 발생해도 제대로 종료되도록 ..
[이펙티브 자바 3/E] 아이템7 - 다 쓴 객체 참조를 해제하라 * 다 쓴 참조 : 문자 그대로 앞으로 다시 쓰지 않을 참조 - 가비지 컬렉션 언어에서는 (의도치 않게 객체를 살려두는) 메모리 누수를 찾기가 아주 까다롭다. 객체 참조 하나를 살려두면 가비지 컬렉터는 그 객체뿐 아니라 그 객체가 참조하는 모든 객체(그리고 또 그 객체들이 참조하는 모든 객체...)를 회수해가지 못한다. ===> 해당 참조를 다 썼을 때 null 처리(참조 해제)하면 된다. - 객체 참조를 null 처리하는 일은 예외적인 경우여야 한다. ===> 다 쓴 참조를 해제하는 가장 좋은 방법은 그 참조를 담은 변수를 유효 범위(scope) 밖으로 밀어내는 것이다. 메모리 누수에 주의해야 하는 경우 1. 자기 메모리를 직접 관리하는 클래스 2. 캐시 3. 리스너(listener) 혹은 콜백(cal..
[네트워크/보안] 네트워크 보안 실습 환경 구축 - 네트워크 시뮬레이터를 이용한 네트워크 구성 GNS3 설치 https://github.com/GNS3/gns3-gui/releases Releases · GNS3/gns3-gui GNS3 Graphical Network Simulator. Contribute to GNS3/gns3-gui development by creating an account on GitHub. github.com GNS3-2.2.41-all-in-one.exe 설치 GNS3 설정 - File > New blank project 클릭, 새로운 프로젝트를 생성한다. - Edit > Preferences에서 라우터, 네트워크 스위치, VirtualBox로 구성될 보안 시스템을 추가한다. 라우터 - Dynamips > IOS routers에서 new를 클릭한다. - CISCO I..
[네트워크/보안] 네트워크 보안 실습 환경 구축 - 네트워크 구축, 가상 머신 환경 구축 네트워크 구축 이전 선행되어야 할 것들 1. 사무실의 도면을 간략하게 그린 후 네트워크에 접속할 디바이스(PC, 프린터 등)를 어디에 배치할지 선정한다. 2. 네트워크에 접속하는 디바이스 대수와 향후 증감 여부를 예측하여 랜 케이블 설치 수량을 결정한다. 3. ISP 업체를 선정할 때는 가격, 통신 품질을 고려하고 추가 혜택이 있는지 종합적으로 판단한다. - 네트워크 장비는 사무실에 직접 설치하지 않는 것을 권장하고 통상 기업 내 전원 이중화나 UPS(Uninterruptible Power System(무정전전원장치))와 공조 시설을 갖춘 전산실처럼 직접적인 접근이 제한된 장소에 위치하는 것이 좋다. VirtualBox를 이용한 가상 머신 구축 우분투 설치(GUI 기반 데스크톱 배포판) https://u..