728x90 반응형 Computer Science45 Strategy Pattern 전략 패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있도록 해준다. 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. Robot을 상속받으면서 각자 다른 attack, move를 가진 여러 Robot을 생성해보자. 이러한 구조에서는 RobotA의 attack, move를 RobotB에서도 사용하는 경우, 같은 메소드에 대하여 구현의 중복이 일어난다. 이는 새로운 Robot을 추가하는 경우에도 같은 method에 대해서 중복이 일어난다. 따라서 한 곳에 attack과 move 를 인터페이스로 정의해 둔 뒤, 각 메소드에 대하여 동작을 구현하여 하나씩 꺼내와서 정의하여 중복을 피할 수 있다. - 실습 C# (위의 구조에서는 set이 있지만 아래 코드에는 set을 사.. 2022. 8. 24. 13. 부팅 부팅 : 운영체제 커널을 storage에서 특정 주소의 물리 메모리로 복사하고, 커널의 처음 실행위치로 PC를 가져다 놓는 프로그램 ※ 패스트캠퍼스 [컴퓨터 전공자 따라잡기 온라인 완주반] 강의를 참고하여 작성하였습니다. 2022. 8. 22. 12. 파일시스템 파일시스템: 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 / 알고리즘 파일시스템이 만들어진 이유? - 0과 1의 데이터를 비트 단위로 관리하기에 오버헤드가 너무 큼 -> 블록단위로 관리(고유 번호 부여) -> 사용자가 각 블록 고유 번호 관리가 어려움 -> 사용자는 파일단위로 관리, 각 파일은 블록 단위로 관리 파일 사이즈가 가변적인 경우가 있으므로 불연속 공간에 파일 저장 기능 지원이 필요함 - 블록 체인 : 블록을 linked list로 연결 - index block 기법 : 각 블록에 대한 위치 정보를 기록해서, 한번에 끝 블록을 찾아갈 수 있도록 함 windows : fat, fat32, ntfs linux : ext2, ext3, ext4 (inode 방식 사용) 파일 시스템과 시스템 콜 :.. 2022. 8. 22. 11. 가상메모리 가상메모리(virtual memory system) 실제 각 프로세스마다 충분한 메모리를 할당하기에는 메모리 크기가 한계가 있기 때문에 가상 메모리는 여러 프로세스 동시 실행 시스템에서 반드시 필요하다. ex ) 메모리가 4gb라고 할 때 한 프로세스가 한번에 4GB를 전부 사용하지 않기 때문에 일부만 메모리에 올려둔다. 이 때 실제 메모리 주소를 물리 주소라고 하고, 프로세스가 참조하는 주소를 가상 주소라고 한다. 가상주소와 물리주소를 계속 변환하다보니 시간이 오래걸려서 주소를 변환해주는 하드웨어 장치인 MMU(Memory Management Unit)를 사용한다. : cpu -> virtual address -> mmu - physical address -> memory 페이징 시스템 페이징 : 크기.. 2022. 3. 4. 10.Thread 프로세스 간에는 각 프로세스의 데이터 접근이 불가한데 스레드는 하나의 프로세스에 여러개를 생성하여 프로세스의 데이터에 모두 접근할 수 있다. Multi Tasking VS Multi Processing VS Multi Thread 멀티 태스킹 : 하나의 cpu, 여러개 process 멀티 프로세싱 : 여러 cpu, 여러개 process : 하나의 process를 여러 cpu에서 실행하는 방법 ? Thread를 여러개 만들어서 해결 가능- 최근 cpu가 멀티 코어를 가지고 있음 멀티스레드 Thread 장점 사용자에 대한 응답성 향상 자원 공유 효율 코드 간결성 Thread 단점 스레드 중 한 스레드만 문제가 생겨도 전체 프로세스가 영향을 받음 스레드를 많이 생성하면 context switching이 많이 .. 2021. 12. 14. 09. 프로세스와 IPC 여러 프로세스를 만들어서 동시 실행을 위하여 프로세스간 통신이 필요하다. 하지만 프로세스들이 서로의 공간을 쉽게 접근하면 데이터/코드가 변경될 수 있으므로 굉장히 위험하다. 그래서 프로세스간 통신을 위한 기법이 나오게된다. ex ) 웹서버 ex ) 리눅스 : 리눅스의 프로세스간 공간은 완전히 분리되어 있다. 사용자 공간은 절대 접근할 수 없지만 커널 공간은 공유한다. 프로세스간 통신을 위한 특별한 기법이 필요한데 이때 IPC기법 등의 기법이 필요하다. 1. IPC ? = InterProcess Communication 1 ) Pipe : 단방향 통신, fork()로 자식 프로세스를 만들었을 때 부모와 자식간의 통신을 한다 fork() 라는 시스템콜은 호출하면 현재 프로세스(부모)를 똑같이 복사한 새로운(.. 2021. 8. 1. 08. 프로세스와 Context Switching 1. PCB(Process Control/Context Blocck) 에 저장 - PCB : 프로세스가 실행중인 상태를 캡쳐/구조화해서 저장한다. - 아래의 정보를 갖고 있다. Process ID Register 값(PC, SP) Scheduling Info(Process State) : 프로세스가 현재 ready, block, running 상태인지에 대한 정보 Memory Info(메모리 사이즈 limit) 2. Context Switching - Context Switching : CPU에 실행할 프로세스를 교체하는 기술 1 ) 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서 메인 메모리에 저장 2 ) 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB정보를 CPU에 넣고.. 2021. 8. 1. 07. 프로세스 구조 1. 프로세스의 구조를 python, C 의 예로 살펴보자. : 프로세스는 STACK, HEAP, DATA, CODE 네 가지 영역으로 구성된다. 우리가 프로그램에서 작성하는 코드는 PROCESS의 CODE영역에 binary 형식으로 mapping된다. DATA 영역에는 선언한 변수가 정적으로 mapping 되고, Stack에는 실행 순서대로 변수,값을 저장했다가 사용이 끝나면 삭제된다. 2. 프로세스의 구성 1 ) text (code) : 코드 2 ) data : 변수 / 초기화된 데이터 - BSS : 초기값이 없는 전역변수 ( int data; ) - DATA : 초기값이 있는 전역변수 ( int data=1; ) 3 ) stack : 임시 데이터(함수 호출, 로컬 변수) 4 ) heap : 코드에서.. 2021. 7. 31. 06. 인터럽트 1. 인터럽트란 ? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 1 ) Timer Interrupt : 선점형 스케쥴러를 따를 때, 프로세스 running 중에 스케쥴러가 이를 중단시키고, 다른 프로세스로 교체하기 위해 현재 프로세스 실행을 중단시킨다. 그러기 위해서는 스케쥴러 코드가 실행이 되어서 현 프로세스 실행을 중지시켜야 한다. 2 ) IO Device와의 커뮤니케이션 중 저장 매체에서 데이터 처리 완료시, 프로세스를 깨워야한다. ( block state -> ready state ) 3 ) 1 / 0 을 계산할 때 예외상황을 프로세스 등에 알려주어야함 #include int main() { print(.. 2021. 7. 31. 05. 프로세스 상태와 스케쥴러 예시를 먼저 살펴보자 1. 선점형과 비선점형 스케쥴러 1 ) 선점형 스케쥴러 ( Preemptive Scheduling ) : 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음 2 ) 비선점형 스케쥴러 ( Non-preemptive Scheduling ) : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없음 선점형 VS 비선점형 Process 상태, 정적 우선순위, 선점형 스케쥴러, 시분할 시스템이 적용되었을 때 다음과 같이 동작한다. 2021. 7. 26. 이전 1 2 3 4 5 다음 728x90 반응형