1. 알고리즘
- 미학습
2. 운영체제(공룡책)
*챕터2 - 운영체제 구조 (Operating System Structures)
2.3.3.3 장치 관리 (Device Management)
프로세스는 작업을 계속 수행하기 위해 추가 자원(주 기억장치, 보조기억장치, 파일 등)이 필요할 수 있다. 운영체제에 의해 제어되는 다양한 자원들은 장치로 간주될 수 있다. 크게 물리 장치(HDD), 가상적 장치로 나눌 수 있다.
일단 장치를 요청(request())하고 할당 받게 되면, 파일과 마찬가지로 그 장치를 읽고(read()), 쓰고(write()), 위치 변경(reposition())할 수 있다. 즉, 입출력 장치와 파일간에는 유사성이 많다. 그래서 많은 운영체제에선 이 두 가지를 통합한 파일-장치 구조(file device structure)로 결합한다.
2.3.3.4 정보 유지 관리(Information Maintenance)
많은 시스템콜은 단순히 사용자 프로그램과 운영체제 간의 정보전달을 위해 존재한다. 하지만 일부 다른 시스템 콜 집합은 프로그램 디버깅에 도움을 준다. 그 중 많은 운영체제에서 제공하는 시간 프로파일(time profile)에 대해 알아보자.
시간 프로파일은 해당 프로그램이 특정 위치, 혹은 위치의 집합에서 수행한 시간의 양을 나타낸다. 시간 프로파일은 추적 설비(tracing facility)나 정규 타이머 인터럽트가 필요하다. 타임 인터럽트가 발생할 때 마다 프로그램 카운터의 값이 기록된다. 따라서 타이머 인터럽트가 충분히 빈번하게 일어나면, 프로그램의 여러 부분에서 소비한 시간의 그래프를 얻을 수 있다.
운영체제는 현재 수행되고 있는 모든 프로세스에 대한 정보를 가지고 있으며, 이러한 정보에 접근하기 위한 시스템 콜을 가지고 있다.
2.3.3.5 통신(Communication)
통신 모델에는 메시지 전달과 공유 메모리 두 가지 모델이 있다.
구분 | 특징 |
메시지 전달 | - 프로세스 간 정보를 교환하기 위해 서로 메시지를주고 받는다. - 메시지는 직접, 간접 교환 될 수 있다. - 통신이 이루어지기 전 연결이 반드시 open되어야 한다. - open이 되려면 동일 CPU 프로세스든, 다른 네트워크의 프로세스든 상대 통신자의 이름을 알아야한다. - 연결을 받아들일 프로세스들의 대부분은 특수 목적의 데몬(daemon)으로서 이들은 그러한 목적을 위해 제공된 시스템 프로그램들이다. - 소량의 데이터를 교환할 때 유용 -> 충돌이 없기 때문에 - 공유 메모리 방식보다 구현이 쉬움 |
공유 메모리 | - 프로세스 간 메모리를 공유 - 일반적인 운영체제에선 프로세스간 메모리를 공유하는 것은 금지되어 있기 때문에 공유 메모리 모델에선 이러한 제한을 제거하는 것이 필요하다. - 공유 메모리의 데이터 형식은 프로세스에 의해 결정된다. - 한 컴퓨터 안에선 메모리 전송 속도로 수행 가능하므로 빠른 속도와 편리한 통신을 허용 - 데이터 보호, 동기화 부분에서 여러 문제가 발생할 가능성이 높음 |
2.3.3.5 보호(Protection)
보호는 컴퓨터 시스템이 제공하는 자원에 대한 접근을 제어하기 위한 기법을 지원한다.
2.4 시스템 서비스(System Services)
시스템 서비스는 시스템 유틸리티(System Utility)로도 알려진, 프로그램 개발과 실행을 위해 더 편리한 환경을 제공한다. 이들 중 몇몇은 단순히 시스템 콜에 대한 인터페이스 역할을 하지만, 나머지는 훨씬 복잡하며 다음과 같이 분류 될 수 있다.
- 파일 관리 : 파일, 디렉토리에 대한 생성,삭제,복사,이름변경,인쇄,열거 등의 일반적인 조작
- 상태 정보 : 날짜, 시간, 사용가능한 메모리 및 디스크의 잔여공간, 사용자 수 등의 일반적인 정보부터 상세한 성능, 로깅 및 디버깅 정보를 제공
- 파일 변경 : 저장장치들에 저장된 파일의 내용을 생성하고 변경하기 위해 다수의 문장 편집기(text editor)를 사용
- 프로그래밍 언어 지원 : C, C++, Java, Python 등에 대한 컴파일러, 어셈블러, 디버거 및 해석기가 종종 운영체제와 함께 사용자에게 제공
- 프로그램 적재 및 수행 : 프로그램이 수행되려면 메모리에 반드시 적재 되어야 한다.
- 통신 : 프로세스, 사용자, 그리고 다름 컴퓨터 시스템들 사이에 가상 접속을 이루기 위한 기법을 제공
- 백그라운드 서비스 : 서비스(프로세스)중 일부는 자신의 일을 완수하면 종료하지만 일부는 시스템이 정지 될 때까지 계속해서 실행된다. 이러한 시스템 프로그램 프로세스는 서비스, 서브시스템 또는 데몬이라고 불린다. 일반적인 시스템은 수십 개의 데몬을 가지고 있다.
운영체제 대부분은 시스템 프로그램과 함께 일반적인 문제점을 해결하거나 연산을 수행하는데 유용한 웹브라우저, 워드프로세서 등의 프로그램들도 제공한다.
3. 후니의 쉽게 쓴 시스코 네트워킹
* Part5
Section 9-10
서브네팅 : 호스트 부분을 줄여 네트워크 부분으로 만들어 사용가능한 네트워크 수를 늘리는 것
트레이스 : 출발지 - 목적지까지의 모든 경로와 각각의 응답시간을 확인하는 프로그램, TCP/IP의 유틸리티 중 하나
4. 김영한의 Spring 로드맵
개방-폐쇄 원칙 (OCP, Open-Closed Principle) - 확장에는 열려있고, 수정 및 변경에는 닫혀있다.
- 해당 프로젝트에서 SpringConfig만 수정해 MemoryMemberRepository를 JdbcMemberRepository를 교체
- 다른 코드엔 수정이 전혀 없음 -> 객체 지향설계의 다형성 + Spring의 DI를 이용
@SpringBootTest(서버실행) VS 단위 테스트(자바로만)
- 상황에 따라 유동적으로 테스트를 진행해야 하지만 많은 경우 단위 테스트가 일반적으로 잘 작동되는 테스트일 확률이 높다.
- 상대적으로 단위 테스트가 세세하게 구현할 수 있다.
@Transactional : 테스트 시작전 트랜잭션을 시작, 종료 후엔 롤백
테스트에선 DI를 필드 주입 방식으로 해도 괜찮다 -> 나 혼자만 테스트하니까
'TIL' 카테고리의 다른 글
TIL - 0324 (1) | 2023.03.24 |
---|---|
TIL - 0322 (0) | 2023.03.22 |
TIL - 0320 (0) | 2023.03.20 |
TIL - 0318 (0) | 2023.03.18 |
TIL - 0317 (0) | 2023.03.17 |