본문 바로가기

CS 전공지식 정리8

[운영체제] 메모리 계층 1. 메모리 계층 2. 레지스터(Register) CPU 안에 있는 작은 메모리 휘발성이 있으며 속도가 가장 빠름 기억용량이 적음 1) 레지스터 유형 데이터 레지스터(Data Register) : 산술 및 논리 연산에 사용되는 데이터를 보관 주소 레지스터(Address Register) : 메모리 주소를 저장하며, 이 주소에서 데이터를 가져오거나 이 주소로 데이터를 전송하는데 사용 프로그램 카운터(Progream counter) : 다음에 실행될 명령어의 메모리 주소를 보관 명령 레지스터(Instruction Register) : 현재 실행 중인 명령어를 저장 상태 레지스터(Status Register) : 플래그를 저장하며, 이전 연산의 결과에 따라 설정되거나 재설정 3. 캐시 메모리(Cache Mem.. 2023. 11. 9.
[운영체제] 컴퓨터의 요소 1. 컴퓨터의 요소 2. CPU(Central Processing Unit) 산술 논리 연산 장치, 제어 장치, 레지스터로 구성되어 있는 컴퓨터 장치 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행 운영체제의 커널(관리자 역할) : 프로그램을 메모리에 올려 프로세스를 만드는 역할 CPU(일꾼) : 메모리에 있는 프로세스를 처리하는 역할 1) 산술 논리 연산 장치(ALU, Arithmetic Logic Unit) 덧셈, 뺼셈 같은 두 숫자의 산술 연산과 배타적 논리합, 논리곱 같은 논리 연산을 계산하는 디지털 회로 2) 제어장치(CU, Control Unit) 프로세스 조작을 지시하는 CPU의 한 부품 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정 .. 2023. 10. 30.
[운영체제] 시스템콜(System Call) 1. 시스템콜이란? 운영체제가 커널에 접근하기 위한 인터페이스 주로 하드웨어 접근, 시스템 리소스를 관리, 입출력 작업 수행, 프로세스간 통신 등을 목적으로 사용 1) 유저 모드 - 유저가 접근할 수 있는 영역을 제한해둔 모드 - 컴퓨터 자원에 함부로 침범하지 못하는 모드 2) 커널 모드 - 모든 컴퓨터 자원에 접근할 수 있는 모드 3) 커널 - 운영 체제의 핵심 부분 - 시스템 콜 인터페이스를 제공 - 보안, 메모리, 프로세스, 파일 시스템, I/O 디바이스, I/O 요청 관리 등 운영체제의 중추적인 역할 2. 동작 과정 유저 프로그램이 I/O 요청 트랩(Trap)이 발동 올바른 I/O 요청인지 확인 유저 모드가 시스템 콜을 통해 커널 모드로 변환 해당 I/O 요청 실행 3. 시스템콜의 목적 사용자 프.. 2023. 10. 28.
[운영체제] OS(Operation System)이란? 1. 운영체제(OS, Operation System) 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스 2. OS의 역할 1. CPU 스케줄링, 프로세스 관리 - CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리 2. 메모리 관리 - 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리 3. 디스크 파일 관리 - 디스크 파일을 어떠한 방법으로 보관할지 관리 4. I/O 디바이스 관리 - I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고 받는 것을 관리 3. OS의 구조 1) GUI - 사용자가 컴퓨터와 상호작용하기 위한 시각적인 인터페이스 2) CUI - 사용자가 컴퓨터와 상호작용하기 위한 명령어로 처리하는 인터페이스 3) 드라이버 - 하드.. 2023. 10. 28.
[디자인 패턴] 옵저버 패턴(Observer Pattern) 1. 옵저버 패턴(Observer Pattern) 한 객체의 상태가 변경될 때마다 그 객체에 의존하는 다른 객체들에게 알림을 보내는 디자인 패턴 #include #include using namespace std; class Observer { public: virtual void update(float temperture, float humidity) = 0; }; class WeatherStation { private: vector observers; float temperture; float humidity; public: void addObserver(Observer* observer) { observers.push_back(observer); } void removeObserver(Observe.. 2023. 10. 22.
[디자인 패턴] 전략 패턴(Strategy Pattern) 1. 전략 패턴(Strategy Pattern)이란? 객체의 행위를 바꾸고 싶을 때, '직접' 수정이 아닌 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능한 패턴 #include using namespace std; // Strategy Interface class Strategy { public: virtual int doOperation(int num1, int num2) = 0; }; // Concrete Strategies class Add : public Strategy { public: int doOperation(int num1, int num2) override { return num1 + num2; } }; class Subtract : public .. 2023. 10. 22.
[디자인 패턴] 팩토리 패턴(Factory Pattern) 1. 팩토리 패턴(Factory Pattern)이란? 객체를 생성하는 클래스를 따로 두는 디자인 패턴(Simple Factory Pattern) #include #include using namespace std; class Animal { public: virtual void makeSound() = 0; }; class Dog : public Animal { public: void makeSound() override { cout 2023. 10. 22.
[디자인 패턴] 싱글톤 패턴(Singleton Pattern) 디자인 패턴이란? - 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것 1. 싱글톤 패턴 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 보통 데이터베이스 연결 모듈에 많이 사용 장점 메모리 절약 - 한 번 생성된 인스턴스가 계속 재사용되므로 메모리 절약 가능 2. 데이터 공유가 쉬움 - 전역으로 사용하는 인스턴스이기 때문에 다른 여러 클래스에서 데이터를 공유하며 사용 가능 3. 제어된 리소스 접근 가능 - 싱글톤 객체는 한 번에 하나의 요청만 처리하므로, 데이터베이스 연결이나 파일 작성과 같은 리소스를 안전하게 제어가 가능 단점 1. TDD(Test Driven Development)가 불리 - 싱글톤 객체는 사실상.. 2023. 6. 23.