본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

[OS] 가상 메모리 관리(1) - HW/SW상에서의 관리 1. Cost Model 1) 정의 소프트웨어 프로젝트의 여러 활동을 실행하는 데 소요되는 비용이 각 단계에 대해 완전하고 일관성이 있는가를 검증하는 수단 - 컴퓨터인터넷IT용어대사전 2) 적용 - 가상 메모리의 성능을 높이기 위하여 고려함 - Page fault rate를 최소화함으로써 Context switch 및 Kernel의 개입을 최소화하는 것이 목표 ※ Page reference string : 참조한 페이지 번호 순서 ※ Page fault rate : 페이지 부재율 2. HW상에서의 관리 1) Address Translation Device 2) Bit Vectors (1) Reference Bit Vectors - 최근에 참조된 page인지 표시 - 주기적인 초기화 있음 - used bi.. 2021. 6. 15.
[CS] 면접 기타 예상 질문 구조체와 클래스의 차이 구조체는 값 타입으로, 스택 영역에 할당됨 클래스는 참조 타입으로, 힙 영역에 할당됨 단, 구조체로 선언을 했어도 객체를 힙 영역에 메모리를 할당할 때가 있음 모든 필드의 합이 16byte를 넘는 경우 구조체안에 클래스 타입을 필드로 가질 경우 정보 출처 : https://hijuworld.tistory.com/43 HTML5 수많은 플러그인들로 인한 부작용을 막기 위해 개발된 HTML버전 멀티미디어 직접 재생 가능 서버와의 통신 가능 시멘틱 태그로 검색 엔진의 검색 능력을 극대화 가능 W3C 웹 표준 개발 기구 ※ 웹 표준 : 모든 브라우저에서 웹 서비스가 정상적으로 보여질 수 있도록 하는 표준 멤버변수, 지역변수는 언제 메모리에서 해제되나? 멤버 변수, heap은 사용자 혹은 .. 2021. 6. 11.
[OS] 가상 메모리의 의미 및 할당 기법들 1. Non-continuous Memory Allocation 1) 의미 - 사용자 프로그램을 여러 개의 block으로 분할 - 실행 시에는 필요한 block들만 메모리에 적재하고, 나머지 block들은 swap device에 존재 - Virtual memory(가상 메모리)가 이 원리를 따름 2) 구조 및 동작 Virtual address는 v=(b,d)로 표현할 수 있다. 여기서 b는 블록의 번호이고, d는 블록의 시작점으로부터 떨어진 정도에 대한 값이다. ※ d를 offset이라고도 함 Address mapping 정보 관리는 Block Map Table(BMT)이 맡으며, 이 table은 Kernel 공간에 프로세스마다 하나씩 있다. 그리고 BMT의 residence bit는 메모리상에 적재되어.. 2021. 6. 10.
[OS] 메모리 관리 1. 메모리의 계층 구조 1) 레지스터 2) 캐시 3) 주기억장치 4) 보조기억장치 ※ Block : 주기억장치와 보조기억장치 사이의 데이터 전송 단위이며, 크기는 1~4KB 정도임 ※ Word : 레지스터와 주기억장치 사이의 데이터 전송 단위이며, 크기는 16~64bits 정도임. "32비트 컴퓨터", "64비트 컴퓨터" 에서의 이 비트가 이 Word를 뜻함. 2. Address Binding 논리 주소를 물리 주소로 매핑하는 작업 1) 프로그램의 흐름 소스 코드 -> 컴파일러 -> 목적 프로그램 -> 링커 -> 실행 파일 -> 로더 -> 실행 2) Binding의 종류 (1) Compile time binding - 컴파일 때 진행됨 - 메모리에 프로세스가 적재될 위치(불변)를 컴파일러가 알 수 있는.. 2021. 6. 7.
[개발 완료] 마스크 씌워주는 인공지능 https://youtu.be/akly1JzHDoE Github 링크 (소스 코드) Spring Server https://github.com/jooyeokkim/AIMask-SpringServer jooyeokkim/AIMask-SpringServer Contribute to jooyeokkim/AIMask-SpringServer development by creating an account on GitHub. github.com Flask Server https://github.com/jooyeokkim/AIMask-FlaskServer jooyeokkim/AIMask-FlaskServer Contribute to jooyeokkim/AIMask-FlaskServer development by cre.. 2021. 6. 6.
[OS] Deadlock 1. Deadlock이란? 2개 이상의 프로세스간에 자원에 대한 요청이 뒤엉켜있어서 서로 무한히 대기하고 있는 현상 ※ Starvation과의 차이 Starvation : Ready 상태에서 대기, 발생 가능성이 있는 이벤트를 대기 Deadlock : Asleep 상태에서 대기, 발생 가능성이 없는 이벤트를 대기 2. 자원의 분류 1) 하드웨어 vs 소프트웨어 2) 선점 자원 vs 비선점 자원 : 선점 당해도 문제 없음(CPU, memory) vs 선점 당하면 문제 발생(disk drive) 3) 전체를 한 프로세스에게 할당(CPU, disk drive) vs 부분을 여러 프로세스들에게 할당(memory) 4) 동시에 사용 가능(SW program) vs 동시에 사용 불가능(CPU, memory, dis.. 2021. 6. 2.
[OS] 동기화(3) - Language-level Solution : Monitor Language-level 솔루션 : Monitor 앞서 살펴봤던 Eventcount/Sequencer기법은 Busy waiting도 없고 Starvation도 일어나지 않는 좋은 상호 배제 솔루션이지만, low-level이다보니 구체적이고 복잡한 만큼 쓰기가 다소 불편할 수 있다. 그래서 프로그래밍 언어 레벨(high-level) 기법이 생겨났으며, 그 중 대표적인 기법이 Monitor이다. 실제로 C#, C++, Java 등에서 Monitor Class를 제공하고 있다. 1. Monitor란? - Critical data와 Critical section을 모아둔 공간 - 하나의 프로세스만 진입 가능 - 사용이 쉬움 - 객체 지향 개념과 유사 2. Monitor의 구조 - Mutual exclusion.. 2021. 5. 28.
[OS] 동기화(2) - OS Solutions 1. Spinlock 1) Spinlock이란? - 정수 변수(S) - 초기화, P(), V() 연산으로만 접근 가능 : 한 번에 수행되는 것이 보장됨 - 원자성 2) P(), V() 연산 3) Spinlock의 문제점 - 멀티 프로세서(2개 이상의 CPU) 시스템에서만 사용 가능 : P()는 한 번에 수행된다는 보장이 있고 p() 내에는 자원 할당 대기를 위한 무한루프문이 존재한다. 즉 단일 프로세서에서는 모든 프로세스가 일을 못하는 경우가 발생할 수 있다. - 여전히 Busy waiting 문제가 존재한다. 2. Semaphore(세마포어) 1) Semaphore란? - Dijkstra가 제안한 기법 - 음이 아닌 정수 변수(S) - 초기화, P(), V() 연산으로만 접근 가능 - Busy wait.. 2021. 5. 28.
[OS] 동기화(1) - 동기화 기초, SW/HW Solutions 1. Synchroniztion 이란? 동기화 운영체제는 다중 프로그래밍 시스템이기 때문에 여러개의 프로세스들이 존재하는데, 병행 수행 중인 비동기적 프로세스들이 공유 자원에 동시에 접근하게 된다면 문제가 발생할 수 있다. 이를 위해 필요한 것이 동기화이다. 동기화는 프로세스들이 서로 동작을 맞추고 정보를 공유하는 것을 의미한다. 2. Synchronization 용어 1) Shared data or Critical data - 프로세스간 공유 데이터 2) Critical section(임계 영역) - 공유 데이터를 접근하는 코드 영역(code segment) - 임계 영역의 3가지 필요 조건 (1) 상호 배제(Mutual exclusion) : 둘 이상의 프로세스가 임계 영역에 동시 진입 불가 (2) .. 2021. 5. 24.