[ TDD 특강 ]
[ 혼공컴운 ]
Chapter 04. CPU의 작동 원리
- ALU
- 받아들이는 값 : 레지스터-피연산자, 제어장치-제어신호
- 내보내는 값 : 레지스터-연산결과값, 플래그 레지스터-플래그(연산 결과에 대한 추가적인 상태 정보)
- 제어장치 : 제어 신호를 내보내고 명령어를 해석하는 부품
- 받아들이는 값 : 클럭, 명령어 레지스터-명령어, 플래그 레지스터-플래그, 제어 버스-제어 신호
- 내보내는 값 : CPU 내부-제어 신호, 제어 버스(메모리, 입출력장치)-제어 신호
- 레지스터 : CPU 내 임시 저장 장치
- 프로그램 카운터(명령어 포인터) : 명령어 주소 저장. 지속적으로 증가하며 다음 명령어 읽을 준비. 변위 주소 지정 방식 중 상대 주소 지정 방식에 사용.
- 메모리 주소 레지스터
- 메모리 버퍼 레지스터(메모리 데이터 레지스터) : 메모리 속 값(데이터, 명령어)을 데이터 버스로 주고 받음
- 명령어 레지스터 : 명령어 저장
- 범용 레지스터 : 데이터와 주소 모두 저장 가능
- 플래그 레지스터
- 스택 포인터 : 메모리의 스택 영역의 꼭대기 주소를 저장. 스택 주소 지정 방식에 사용.
- 베이스 레지스터 : 변위 주소 지정 방식 중 베이스 레지스터 주소 지정 방식에 사용.
- 명령어 사이클 : 명령어 처리하는 정형화된 흐름. 인출,실행,간접,인터럽트
- 인터럽트 : CPU의 정상적인 작업을 방해하는 신호
- 동기 인터럽트(예외) : 폴트(예외 발생한 명령어부터 재실행), 트랩(예외 발생한 명령어 다음 명령어부터 재실행, 디버깅), 중단, 소프트웨어 인터럽트
- 비동기 인터럽트(하드웨어 인터럽트)
- 알림 역할. 인터럽트 플래그로 막을 수 있는 것과 없는 것이 있음.
- 인터럽트 요청 신호(입출력장치->CPU)+인터럽트 벡터(인터럽트 서비스 루틴 시작 주소), 인터럽트 플래그 확인, 인터럽트 서비스 루틴(인터럽트 핸들러, 프로그램)
- 기존 작업은 스택 영역에 백업 해두고 멈췄다가 인터럽트 처리 후 재개.
[ 유어클래스 다시 읽기 ]
- section1. 자바 심화(Effective)
- 스트림(Stream) : 배열, 컬렉션을 하나씩 참조해서 람다식으로 처리하는 반복자
- 기존의 명령형이 아닌, 선언형 프로그래밍 가능
- read-only, onetime-only, 내부 반복자
- 자바8 이후에 도입
- 무한 스트림(infinite stream) : limit(), rangeClosed(), 매개변수 등으로 제한 가능
- flatMap() : 다차원 배열일 때, 중첩 구조를 제거하고 단일 컬렉션(Stream< String >)으로 만들어줌.
- reduce() : 요소 소모 및 누적. count(), sum() 등도 내부적으로 reduce() 사용.
- 파일 입출력(I/O)
- InputStream, OutputStream : 스트림은 단방향으로만 데이터 전송 가능
- BufferedInputStream : 보조 스트림. 버퍼==바이트 배열. 한 번에 많은 양의 데이터를 입출력 가능
- FileReader(인코딩->유니코드) / FileWriter(유니코드->인코딩) : 문자 기반 스트림
- File 클래스로 파일과 디렉토리에 접근 가능
- 스레드(Thread) : 실행되는 소스 코드의 흐름
- 프로세스 : 실행중인 어플리케이션
- 싱글 스레드 프로세스, 멀티 스레드 프로세스(동시 작업(멀티 스레딩) 가능)
- 스레드 생성 : Runnable 인터페이스 구현 객체에서 run(), Thread 클래스를 상속받은 하위 클래스에서 run().
Thread thread = new Thread(Runnable);
- start() : run() 내부 실행 위해 필요. 스레드를 실행 대기 상태로 만듦.
- 스레드 동기화
- 임계 영역(Critical section, 하나의 스레드만 실행 가능한 코드 영역),
- 락(Lock, 임계 영역 객체에 대한 접근 권한)
- synchronized : 임계 영역 설정
- 스레드 실행 제어 메서드 : Thread.sleep(long milliSecond)-일시 중지, interrupt()-예외 발생시켜서 실행 대기로 복귀, yield()-양보 등
[ 느낀 점 ]
내일은 낮에 TDD 강의 듣는 시간 빼고는 알고리즘, 자료구조에 몰빵 공부해야겠다.