1. 자바 플레이 그라운드 with TDD, 클린 코드
- 블랙잭 구현 중
- 스페이드, 하트, 클로버, 다이아몬드 종류의 카드를 Card 인터페이스로 추상화
- 플레이어, 딜러의 카드 Cards 클래스로 객체 생성
2. 혼자서 공부하는 컴퓨터 구조 + 운영체제
입출력장치
* 장치 컨트롤러
- 배경 : 다양한 종류의 입출력 장치(호환의 문제), CPU 및 메모리와 입출력장치의 데이터 전송률 차이
- 역할 : CPU와 입출력장치 간의 통신중개, 오류 검출, 데이터 버퍼링(데이터를 모았다가 한번에 전송 or 많이 받아서 조금씩 전송)
- 내부 구성
데이터 레지스터 | 데이터 버퍼 역할을 하는 레지스터(최근 레지스터 대신 RAM을 사용하기도 함) |
상태 레지스터 | 입출력장치의 입출력 준비 상태, 작업 완료 상태, 오류 상태 등의 정보 저장 |
제어 레지스터 | 입출력장치가 수행할 내용에 대한 제어정보 ,명령 저장 |
* 장치 드라이버
- 장치 컨트롤러의 동작을 감지, 제어한다. 장치 컨트롤러가 컴퓨터 내부와 정보를 주고 받을 수 있게 해주는 프로그램
- 장치 컨트롤러(하드웨어적 통로) - 장치 드라이버(소프트웨어적 통로)
* 입출력 방법
명칭 | 특징 |
프로그램 입출력 | - 프로그램 속 명령어로 입출력장치를 제어 - CPU가 장치 레지스터의 주소를 아는 방식은 두가지 - 메모리 맵 입출력(메모리에 입출력 장치에 접근하기 위한 주소공간을 배정) CPU가 메모리 접근할 때와 같은 명령어를 사용하는 것이 장점 메로리 주소공간이 축소되는 단점 - 고립형 입출력 (메모리 주소공간과 입출력장치 주소공간을 분리) 많은 주소공간 활용이 장점 입출력 전용어를 사용해야하는 단점 |
인터럽트 기반 입출력 | - 장치 컨트롤러에서 인터럽트를 발생시켜 CPU에 전달 - 동시 다발적인 경우 우선순위대로 수행(단, NMI(Non-Maskable Interrupt)가 발생한 경우는 최우선으로 -> 플래그 레지스터의 인터럽트 비트가 활성화 되어있는 경우에도 뚫고 최우선으로) - 우선순위는 PIC라는 하드웨어를 사용해 정한다. |
DMA 입출력 (Direct Memory Access) |
- CPU를 거치지 않고 메모리와 입출력장치간의 데이터 전송을 진행 - CPU에서 DMA컨트롤러에게 필요한 데이터를 전송하며 입출력작업 명령 - DMA컨트롤러가 입출력장치와 상호작용하며 수행, 필요 시 메모리에 직접 접근해 정보 읽고 씀 - 작업 종료 후 DMA컨트롤러 -> CPU에 작업완료 인터럽트 전달 - 시스템 버스는 공유 자원이기 때문에 DMA컨트롤러, CPU가 동시 사용할 수 없다. - DMA 컨트롤러와 장치컨트롤러들을 입출력 버스로 연결(시스템버스 사용X) -> 시스템버스 사용빈도 낮춤 |
3. 알고리즘
- 백준 1747번
- https://ahlight.tistory.com/105
백준 1747번 자바
문제 https://www.acmicpc.net/problem/1747 1747번: 소수&팰린드롬 어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수
ahlight.tistory.com
'TIL' 카테고리의 다른 글
TIL - 0222 (0) | 2023.02.22 |
---|---|
TIL - 0221 (0) | 2023.02.21 |
TIL - 0218 (0) | 2023.02.18 |
TIL - 0217 (0) | 2023.02.17 |
TIL - 0216 (0) | 2023.02.16 |