CS 11

[혼자 공부하는 컴퓨터구조와 운영체제] 9_운영체제 시작하기

💡운영체제가 무엇인지개발자가 운영체제를 알아야 하는 이유커널이 무엇인지시스템 호출과 이중 모드운영체제가 제공하는 핵심 서비스의 종류1) 운영체제를 알아야 하는 이유운영체제란프로그램 실행에 필요한 요소: 시스템 자원 / 자원 (CPU, 메모리, 보조기억장치, 입출력장치 등)실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램: 운영체제항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행영역: 커널 영역 + 사용자 영역→ 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원 할당과 실행을 도움 운영체제의 역할운영체제는 실행할 프로그램을 메모리에 적재, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 ..

[혼자 공부하는 컴퓨터구조와 운영체제] 8_입출력장치

💡장치 컨트롤러장치 드라이버프로그램 입출력 방식이 무엇인지인터럽트 기반의 입출력 방식DMA 입출력 방식1) 장치 컨트롤러와 장치 드라이버장치 컨트롤러 = 입출력 제어기 = 입출력 모듈입출력장치의 종류가 매우 많음입출력장치의 데이터 전송률(데이터 교환 속도)가 낮음이 때문에, 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결됨 장치 컨트롤러의 역할CPU와 입출력장치 간의 통신 중개오류 검출데이터 버퍼링데이터 버퍼링버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법 장치 컨트롤러의 내부데이터 레지스터주고받는 데이터가 많은 입출력장치에서는 레지스터 대신 RAM을 사용하기도 함.CPU와 입출력장치 사..

[혼자 공부하는 컴퓨터구조와 운영체제] 6_메모리와 캐시 메모리

💡RAM의 특징과 종류논리 주소와 물리 주소의 차이논리 주소를 물리 주소로 변환하는 방법 이해캐시 메모리와 저장 장치 계층 구조 개념 이해1) RAM의 특징과 종류RAM의 특징RAM에는 실행할 프로그램의 명령어와 데이터가 저장됨전원을 끄면 저장된 명령어와 데이터가 모두 날아감: 휘발성 저장 장치 → ‘실행할 대상’ 저장전원이 꺼져도 저장된 내용이 유지되는 저장 장치: 비휘발성 저장 장치 → ‘보관할 대상’ 저장CPU가 실행하고 싶은 프로그램을 RAM으로 복사하여 저장 후 실행 RAM의 용량과 성능RAM용량이 클수록 보조기억장치에서 미리 저장하는 데이터가 많아짐 → 실행 시간이 짧아짐 / 많은 프로그램 동시에 실행 유리하지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가 X. RAM의 종류..

[혼자 공부하는 컴퓨터구조와 운영체제] 5_CPU 성능 향상 기법

💡빠른 CPU를 위한 설계 기법빠른 CPU를 위한 명령어 병렬 처리 기법RISC와 CISC의 차이에 대한 이해1) 빠른 CPU를 위한 설계 기법클럭클럭 신호에 맞춰 CPU는 명령어 사이클을 실행클럭 속도가 높은 CPU는 일반적으로 성능이 좋음클럭 속도 → CPU 속도 단위1초에 클럭이 몇 번 반복되는지를 헤르츠(Hz)단위로 측정 클럭 속도는 일정하지 않음기본 클럭 속도/최대 클럭 속도최대 클럭 속도를 강제로 끌어올린 것 → 오버클럭킹 코어와 멀티코어지금까지 알던 ‘명령어를 실행하는 부품’ CPU는 오늘날 코어로 사용됨CPU: 명령어를 사용하는 부품을 여러 개 포함하는 부품코어를 여러 개 포함하고 있는 CPU: 멀티코어CPU / 멀티코어 프로세서하지만, 코어 수에 비례하여 무조건 연산 속도가 증가하지 않..

[혼자 공부하는 컴퓨터구조와 운영체제] 4_CPU의 작동 원리

💡ALU와 제어장치레지스터의 종류와 역할명령어 사이클의 이해인터럽트의 개념 1) ALU와 제어장치ALU받는 정보레지스터를 통해 피연산자제어장치로부터 수행할 연산을 알려주는 제어 신호내보내는 정보연산 수행 결과연산 수행 결괏값 → 일시적으로 레지스터에 저장 (프로그램 실행 속도를 위해)플래그연산 결과에 대한 추가적인 상태 정보플래그 레지스터에 저장부호 플래그제로 플래그캐리 플래그오버플로우 플래그인터럽트 플래그슈퍼바이저 플래그 제어장치제어 신호를 내보냄, 명령어 해석 부품제어 신호: 컴퓨터 부품들을 관리/작동시키는 일종의 전기 신호 받는 정보클럭 신호클럭: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위해석해야 할 명령어명령어 레지스터로부터 받아 해석 → 제어 신호 발생시킴플래그 레지스터 속 플래그 ..

[CS : 디자인패턴] 팩토리(Factory)패턴

객체 생성 부분을 추상화한 팩토리(Factory) 패턴. 전의 프로젝트에서 추상팩토리 패턴을 활용하였는데, 팩토리 패턴을 공부하고 추상팩토리패턴과는 어떻게 다른지 알아보겠다. 팩토리(Factory) 패턴 상속 관계의 두 클래스에서 상위 클래스에서 중요한 뼈대를 결정, 하위 클래스에서 객체 생성에 관한 디테일 결정하는 패턴 1. 느슨한 결합 2. 유연성 ↑ 3. 유지보수성 ↑ ChatGPT에게 팩토리 패턴을 물어보니 1. 간단한 팩토리 패턴 2. 팩토리 메서드 패턴 3. 추상 팩토리 패턴 으로 나누어 예제를 알려주었다. 1. 간단한 팩토리 패턴 using UnityEngine; // 무기의 베이스 클래스 public abstract class Weapon { public abstract void Fire(..

[PJ] UIStage 데이터테이블 연동, 추상팩토리와 빌더 패턴

R&D하고 본 프로젝트에 적용하기 위해 패턴을 공부하였다. 들어가는 요소들을 데이터로 받아오거나 조절해야 하는 부분들이 많았는데, 직접 붙였던 부분을 개선하고 싶었다. chatGPT에게 내 상황을 설명하고, 어떠한 디자인패턴을 적용해야 효과적일까? 물어보았더니, 3~4가지 패턴을 추천해주었다. 그 중에 빌더패턴이 효과적으로 보여 그 패턴과 연계시킬 수 있는 패턴을 물어보았다. 2~3가지를 추천해 주어 원래 싱글톤으로 진행하여 했던 빌더패턴을 추상팩토리와 연계시켜 공부하며 작성해나갔다. 전의 R&D 2023.05.01 - [Project/꿈의 왕국 : 영원한 보금자리] - [R&D] UI small Stage Map UIPlayer Move IUIBuilder 추상팩토리 패턴 인터페이스는 이름 앞에 I(대..

[CS : 디자인패턴] 빌더(Builder)패턴

생성 패턴의 한 종류인 빌더(Builder)패턴현재 진행중인 프로젝트에서 UI상의 Stage를 배치하는 과정에서 처음엔 동적으로 데이터를 가져와서 붙이는 것이 좋겠다는 생각을 하였다. 또한 동적으로 붙이기 위한 요소들을 hierachy창이 아닌 script에서 관리하는 것이 편할 것이라 생각하여 관련된 패턴을 chatGPT에게 물어보았다. (요즘 chatGPT와 하루에 최소 1번은 대화하는 듯 하다. 개발부터 일상 계획들까지) 그렇게 Builder 패턴에 대하여 공부하게 되었다. 빌더(Builder)패턴 설계에서 생성 과정을 분리하여 단계적으로 유연하게 객체를 생성할 수 있도록 함 1. 객체 생성 과정 단순화 2. 코드의 가독성 ↑ 2. 유지보수성 향상 하지만, 객체 생성 과정이 단순한 경우 오히려 코드..

[CS : 디자인패턴] 플라이웨이트(Flyweight)

메모리와 직접적으로 연관이 있는 플라이웨이트 패턴. 팀원들과 디자인패턴 스터디를 시작하면서, 우선적으로 게임에 주로 활용되는 패턴을 찾아보았다. 그리고 현재 진행 중인 프로젝트 에 활용할만한 디자인패턴을 찾았다. 본인은 프로젝트에서 디자인과 리소스 관련 역할이 다른 팀원들에 비해 큰 편이라고 생각하였으며, 플라이웨이트를 잘 활용한다면 프로젝트의 메모리를 잘 관리할 수 있을 것이라 생각하였다. 특히, 레퍼런스게임 중 하나인 를 직접 플레이하며 가장 놀랐던 점이 다른 방치형 게임들에 비하여 발열이 거의 없다!라는 점이었다. 방치형 게임을 하다 보면 밤에 깜빡하고 켜두고 잠들 때가 종종 있는데, 다른 게임들은 폭발하는 거 아닌가 싶을 정도로 발열이 굉장히 심했던 기억이 있다. 하지만 프로즌시티는 살짝 따뜻한 ..

[CS : 디자인패턴] 싱글톤(Singleton)

디자인패턴에서 생성패턴의 하나인 싱글톤. 수업에서 계속 다뤄 구조와 의미는 알지만, 스스로 싱글톤이 뭐야?라고 했을 때 쉽게 대답하기 어려웠다. 다른 디자인패턴을 공부하기 전에 개념적으로 확실히 하고 싶어 다시 공부하며 복습하였다. 싱글톤(Singleton) 한 클래스가 한 개의 인스턴스만 갖도록 제한. 프로그램 시작부터 종료까지 동일한 인스턴스로 반환되어 전역 범위에서 접근 가능하게 하는 패턴이다. 중앙에서 관리 혹은 정보 공유가 필요할 때 주로 쓰인다. 장점 하나의 인스턴스를 공유하며 사용하기 때문에 생성 비용이 줄어듦 단점 의존성이 높아짐 - 독립적인 테스트가 어려워짐 의존성 주입 결합을 느슨하게 만들어줌 장점 모듈들을 쉽게 교체 가능한 구조가 되어 테스트가 쉬워짐 의존성 방향이 일관됨 쉽게 추론 ..