본문 바로가기

728x90
반응형

Dev/CS 컴퓨터사이언스

[혼공컴운/OS] 입출력장치 | 장치 컨트롤러 | 프로그램 입출력 | 인터럽트 입출력 | DMA 입출력 | 장치 드라이버 장치 컨트롤러 컴퓨터 내부와 정보를 주고 받을 수 있도록 하는 하드웨어적인 통로 장치 컨트롤러의 역할 CPU와 입출력장치 간의 통신 중개: CPU와 입출력장치간 데이터를 주고받을 수 있도록 해줌 오류 검출: 연결된 입출력 장치에 문제가 없는지 오류 검출 및 확인 데이터 버퍼링: 전송률이 다름으로써 생기는 문제를 해결하기 위해 데이터를 버퍼에 저장하여 전달 장치 컨트롤러의 데이터 입출력 방식 프로그램 입출력: 프로그램 속 명령어로 입출력 장치를 제어하는 방식 메모리 맵 입출력: 메모리 접근 주소공간과 입출력 접근용 주소공간을 함께 사용 고립형 입출력: 메모리 접근 주소 공간과 입출력 접근용 주소공간을 독립적으로 사용 (입출력장치 읽기/쓰기 선을 따로 둠으로써 가능해지는 방법임) 인터럽트 기반 입출력: 하드.. 더보기
[혼공컴운/OS] 메모리 | DRAM | SRAM | SDRAM | DDR | 논리주소와 물리주소 | 한계 레지스터 | 베이스 레지스터 메모리(RAM)의 종류 메모리의 종류 DRAM: Dynamic RAM → 시간이 지나면 데이터가 사라지며 집적도가 높아 메인 메모리로 주로 사용 SRAM: Static RAM → 시간이 지나도 데이터가 사라지지 않으면 집적도가 낮고 비싸 캐시메모리로 주로 사용 SDRAM: Synchronous Dynamic RAM → 클럭에 따른 데이터 전송에 최적화된 DRAM DDR SDRAM: Double Data Rate Synchronous Dynmamic RAM → 대역폭이 2배 넓어진 Synchorous DRAM 자문자답 DRAM은 왜 집적도가 높을까? DRAM은 한 셀당 한 개의 트렌지스터와 한 개의 커패시터(데이터저장)로 구성 DRM은 집적도를 높이기 위해 선폭을 작게 만듦 또한 집적도를 높이기 위해 소자.. 더보기
[혼공컴운/OS] CPU의 속도를 높이는 방법 | 클럭 | 멀티코어 | 멀티스레드 | 파이프라이닝 | 슈퍼스칼라 | OoOE | RISC | CISC CPU의 속도를 높이려면 어떤 방법이 있을까? 작업 속도의 단위(클럭)을 빠르게 한다! → 클럭 / 오버클럭 명령어 인출 및 해석 부품(코어)의 수를 늘린다! → 멀티코어 프로세서 하나의 코어가 여러 개의 명령어를 동시에 처리할 수 있도록 한다! → 멀티스레드 프로세서 명령어 처리 파이프라인을 여러개 구성한 → 슈퍼스칼라 데이터 의존성 등이 없어서 대기할 필요가 없는 명령어는 먼저 처리해서, 최대한 파이프라인의 중단을 방지한다 → OoOE (비순차적 명령어 처리) 명령어를 중복해서 실행할 수 있도록 한다! → 명령어 파이프라이닝 데이터 위험: 데이터 간 의존성으로 인해 문제 발생 위험 제어 위험: 불필요한 명령어를 미리 읽어올 위험 구조 위험: 서로 다른 명령어가 동시에 같은 부품을 사용할 위험 파이프라.. 더보기
[혼공컴운/OS] CPU | 레지스터의 종류 | CPU 명령어 사이클 | 인터럽트 ALU : 산술 및 논리 연산 수행 [input] 레지스터에서 피연산자 받기 + 제어장치에서 제어신호 받기 [output] 연산 결과와 플래그를 내보내기 플래그는 플래그 레지스터에 저장 → 플래그의 종류 { 부호 플래그, 제로 플래그, 캐리 플래그, 오버플로우 플래그, 인터럽트 플래그, 슈퍼바이저 플래그 } 제어장치 : 명령어 해석 및 제어신호 출력 [input] 클럭이라는 입력 신호 읽기 → 클럭 단위로 제어 신호 전달 [input] 명령어 레지스터에서 해석해야 할 명령어 읽기 [input] 플래그 레지스터에서 플래그 값 읽기 [output] 제어 신호를 메모리와 입출력 장치에 제어버스를 통해 전달 레지스터 : CPU 내의 임시저장장치 프로그램 카운터: 메모리에서 가져올 명령어가 저장된 주소를 저장 명.. 더보기
[혼공컴운/OS] 명령어 | 고급언어와 저급언어 | 컴파일러와 인터프리터 | 명령어의 구성 3장 3-1장. 고급 언어와 저급 언어 고급 언어 → 변환 → 저급언어 고급언어 및 변환 기법의 구성 컴파일러 언어: 소스 코드를 한 번에 읽어서 저급 언어로 변환하고, 실행하는 언어 (예: C) 인터프리터 언어: 소스 코드를 한 줄씩 읽어서 저급 언어로 변환 및 실행하는 언어 (예: Pyhton) 일반적으로 컴파일러 언어가 인터프리터 언어보다 빠르고, 둘을 혼용해서 사용할 수도 있음 저급언어의 구성 기계어: 0과 1로 이루어진 명령어 어셈블리 언어: 기계어를 사람이 읽기 편한 형태로 번역한 언어 3-2장. 명령어의 구성 저급언어의 구성: 연산코드 필드 + 오퍼랜드 필드 + 주소 지정 방식 연산코드 필드: 명령어가 수행할 연산을 저장 데이터 저장 산술/논리 연산 제어 흐름 변경 입출력 제어 오퍼랜드 필드.. 더보기
[혼공컴운/OS] 컴퓨터 구조 | 숫자 데이터의 표현 | 문자 데이터의 표현 | 다양한 인코딩 방법 1장 1-1장. 컴퓨터 구조를 알아야 하는 이유 컴퓨터 구조 이해 → 문제 해결 능력 향상 단순한 코드 작성 → 성능, 용량, 비용 고려 1-2장. 컴퓨터 구조의 큰그림 데이터와 명령어 중앙처리장치(CPU) — ALU, Register, 제어장치 주기억장치(Memory) RAM vs ROM RAM: 휘발성 메모리 (static RAM, Dynamic RAM 등등) ROM: 비휘발성 메모리 (BIOS 설치되어있음) 보조기억장치: HDD, SDD, CD, USB … HDD vs SSD HDD: 자기장의 원리로 정보를 저장 → 물리적 손상 시 정보 손상 SSD: 전자적으로 정보를 저장 → 빠르고 충격에 강함 (좀더비싸고, 방전시 정보 손실 위험) 입출력장치: 모니터, 키보드, 마우스, 스피커, 마이크 등 그외.. 더보기
[CS, Computer Science] 디자인 패턴 #1 (싱글톤 패턴, 팩토리 패턴, 전략 패턴, 옵저버 패턴, 프록시 패턴과 프록시 서버) 디자인 패턴이란? : 프로그램 설계 시 발생한 문제를 객체간의 상호관계 등을 이용해 해결할 수 있도록 하는 것 1. 싱글톤 패턴(Singleton pattern) : 하나의 클래스에 하나의 인스턴스를 가지는 것 (예: 데이터베이스 연결 모듈 - mongoDB의 mongoose 모듈, MySQL 등) [장점] 인스턴스 생성 비용 감소 [단점] 의존성 증가 → TDD (Test Driven Development)의 걸림돌이 됨 (단위 테스트를 위한 독립적인 인스턴스를 생성하지 못하기 때문) 의존성 증가 문제를 해결하기 위한 도구로 '의존성 주입(DI, Dependency Injection)' 을 사용 : 메인모듈 말고 '의존성 주입자'가 간접적으로 하위 모듈에 의존성을 주입함 (=디커플링 되다) (장점) 테.. 더보기
[Data Structure] 맵(Map) | 맵이란? | HashMap | TreeMap | LinkedHashMap Map Data Structure 다섯 번째 스터디 : 맵 (Map) Map Key와 Value를 가진 집합 중복을 허용하지 않음 (1개의 key - 1개의 value) Map 컬렉션에 여러 종류의 클래스가 있는데, 그중 가장 많이 사용되는 것이** HashMap, TreeMap, LinkedHashMap** 1. HashMap HashMap → 내부적으로 array 형태로 저장 → 검색속도 매우 빠름 맵의 순서를 보증하지 않음 (내부 Hash 값에 따라 키순서가 정해져서, 규칙 X) 비동기 클래스 NULL값을 허용 비교사항 Hash Table Hash Map 병렬처리 권장 비권장 동기화 지원 미지원 속도 비교적 느림 비교적 빠름 Null 비허용 허용 2. TreeMap TreeMap → 내부적으로 이진.. 더보기

728x90
반응형