분류 전체보기 (60) 썸네일형 리스트형 React useState hook (Typescript 에서) boolean type 을 가지는 간단한 useState import { FC, useState } from 'react' export const App: FC = () => { const [isLoggedIn, setIsLoggedIn] = useState(false); const handleLogin = () => { setIsLoggedIn(true); }; const handleLogout = () => { setIsLoggedIn(false) }; return ( Login Logout Use is {isLoggedIn ? 'Logged in' : 'Logged out'} ); }; 단순히 boolean type을 지정해 주기만 하면 사용하는 데에 지장이 없다. 사용자 지정 타입의 경우도 비슷.. OS - 페이지 교체 기법 페이지 교체기법 (page replacement strategy) 새로이 적재되어야 할 페이지를 위해 기존의 어느 페이지가 주기억장치로부터 제거되어야 할지를 결정하는 전략 1. 최적화 원칙 (principle of optimality, 최적 교체) * 최적의 성과를 얻기 위해서 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법 * 예측이 맞지 않을 경우가 발생되므로 실현 가능성이 낮은 기법이다 * OPT, MIN 등의 방법이 있다 2. 무작위 페이지 교체 (random page replacement) * 무작위하게 어떤 페이지든지 교체될 수 있는 방법 * 최악의 경우 바로 참조될 페이지가 교체될 수도 있기 때문에 거의 사용하지 않는다 3. FIFO (First In First Out) 페이지 교.. OS - 페이지 호출기법 페이지 호출기법 * 보조기억장치에 저장된 페이지를 주기억장치로 옮길 영역을 결정하여 보조기억장치에서 주기억장치로 옮기기 위한 기법 * 요구 페이지 호출기법, 예상 페이지 호출기법 등이 있다1. 요구 페이지 호출기법 (demand page fetch stratagy) * 프로세스의 페이지 요구가 발생할 때 페이지가 주기억장치로 옮겨지는 방식 * 각 페이지는 실행 중인 프로세스에 의해 참조될 때만 보조기억장치에서 주기억장치로 옮긴다사용 이유 미래를 완전히 예상할 수 없기 때문에 완전한 예상 페이지를 구현할 수 없다 프로세스에 실제로 필요한 페이지들만이 주기억장치에 적재된다 페이지 반입에 대한 오버헤드가 거의 없다 새 페이지들이 적재될 때 마다 기다려야 하므로 주기억장치의 낭비가 발생한다 2. 예상 페이지 호.. OS - 페이징 / 세그먼테이션 혼용기법 페이징 세그먼테이션 혼용기법 * 페이징 기법의 메모리 관리 측면에서의 장점과 세그먼테이션 기법의 논리적 장점을 활용하기 위한 기법 * 여러 개의 페이지가 모여 하나의 세그먼트를 구성 * 하나의 세그먼트에 속한 페이지 모두가 주기억공간에 위치할 필요는 없다 가상주소와 실제주소의 형식 가상주소 3차원의 요소, 즉 V=(s, p, d)로 표현 세그먼트 번호 페이지 번호 변위값 s p d 실제주소 세그먼트 s에 속한 가상 페이지 p에 사상하는 프레임 p' + 변위 d 페이지 프레임 변위값 p' d 페이징 / 세그먼트 혼용기법의 동적 주소변환 * 가상주소의 세그먼트 번호 s를 이용해서 세그먼트 테이블의 페이지 주소 p와 세그먼트 길이 l을 구한 후 가상주소의 변위값 d와 세그먼트 테이블에서 얻은 세그먼트 길이 l.. OS - 세그먼테이션 기법 (segmentation) 세그먼테이션 기법 * 가상기억장치에 보관된 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 방법 * 논리적인 크기로 나눈 단위를 세그먼트라 하며 각 세그먼트는 고유한 이름과 크기를 갖는다 * 각 세그먼트는 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키 (storage protection key)를 사용한다 * 프로그램이 여러 개의 분리된 주기억장치 블록을 차지할 수 있도록 하되 각 블록은 같은 크기일 필요는 없으나 연속된 기억장소로 구성되어야 한다 * 세그먼트 기법의 위치지정 방법은 first-fit, best-fit, worst-fit 방법과 동일하다 실행 프로세스가 가상기억장소의 주소를 V=(s,d)로 참조한다 세그먼트 사상기법은 우선.. kernel programming setup in mac os nasm 어셈블리어 컴파일러 nasm document nasm Homebrew Frmulae $ brew install nasm 설치 후 확인 $ nasm -v qemu 가상화 소프트웨어 qemu document qemu Homebrew Frmulae 커널, OS등 디버깅할때 사용 $ brew install qemu 설치 후 확인 $ qemu-system-x86_64 마우스 인터럽트 opt + cmd + g OS - 페이징 기법 페이징 기법 * 기억공간을 동일한 고정크기의 페이지로 나누어 페이지 단위의 기억공간 할당을 한다. * 가상주소는 페이지 번호와 페이지 내의 변위로 구성된다 * 주소변환을 위해 페이지 매핑 테이블이 필요해서 추가적인 기억공간 낭비가 발생한다 1. 직접사상에 의한 페이징 기법 직접 페이지 사상표를 참고해서 페이지를 찾는 방법이다 페이지 사상표의 내용 페이지 존재 비트 보조기억장치 주소 페이지 프레임 번호 i s p' 페이지 사상표는 참조된 페이지가 주기억장치에 존재하는지의 여부를 나타내야 하며 있다면 그 위치를 반환하고 존재하지 않는다면 보조기억장치의 어디에 있는지를 지시해야 한다 참조한 페이지가 주기억장치에 없는 현상을 페이지 부재(page fault)라 한다 페이지 사상표의 시작주소 b 가상주소 V=(p.. OS - 블록사상 블록사상 * 주소변환사상 또는 매핑이라 한다 * 가상기억장치에 있는 프로그램이 주기억장치에 적재되어 실행될 때 가상기억장치의 논리적인 주소를 주기억장치의 실기억주소로 변환하는 작업 * 프로세스가 실행되는 동안 가상주소를 실주소로 바꾸는 절차를 의미하며 동적 주소변환이라고도 한다 * 정보를 블록으로 분류한 후 가상기억장소의 여러 블록이 실기억장치의 어느 곳에 위치하는지를 관리하기 위해서는 블록사상 기법을 사용한다 1. 가상주소변환 (VAT: Virtual Address Translation) 가상주소를 실주소로 변환하는 주소변환 함수 2. 블록사상의 주소 이차원적으로 특정 항목을 참조하기 위해 그 항목이 들어 있는 블록의 번호와 해당 블록의 시작으로부터 특정 항목까지의 거리를 나타내는 변위를 이용해서 지정.. OS - 가상기억장치 가상기억장치 * 하드디스크와 같은 보조기억장치의 일부를 주기억장치처럼 사용하는 것. 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용한다 * 여러 개의 작은 블록 단위로 프로그램을 나누어 가상기억장치에 보관해 놓고, 프로그램을 실행할 때 요구되는 블록만 주기억장치에 불연속적으로 할당하여 처리한다. * 실행중인 프로세스가 참조하는 주소를 가상주소라고 하며 주기억장소에서 사용할 수 있는 주소를 실주소라고 한다1. 특징 블록 단위로 나누어 사용하므로 연속할당방식에서의 단편화를 해결할 수 있어 주기억장치의 이용률을 높일 수 있다. 다중프로그래밍의 효율을 높일 수 있다 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소변환작업이 필요하다 2. 고정분할 기법 가상기억장치와 주기억장치를 동일한 크기의 페이지 .. OS - 기억장치 교체 기억장치 교체 초기의 시분할 시스템에서 많이 사용됨. 한 번에 하나의 작업이 주기억장치를 사용할 수 있는 상황에서 다중 프로그래밍을 수행하다보면 자연스럽게 발생되는 현상. 어떤 프로그램 전체를 주기억장치에 적재하여 사용하다가 필요에 따라 다른 프로그램과 교체하는 기법. 한 작업이 짧은 시간동안 전 기억장치를 사용하며, 작업이 제거되고 난 다음 그 다음 작업이 들어온다하나의 사용자 프로그램이 완료 될 때 까지 교체과정을 여러 번 수행할 수 있는 데, 이후에 교체 시스템은 페이징 시스템으로 발전되어 가상기억장치 관리에 사용되고 있다보조기억장치에 있는 프로그램1 프로세서의 요청에 의해 실행될 수 있도록 주기억장치로 이동되는 것을 Swap-in 이라 하며 반대로 주기억장치에 있던 프로그램2를 보조기억장치로 이동.. 이전 1 2 3 4 5 6 다음