메모리 관리컴퓨터 내의 한정 된 메모리를 극한으로 활용해야 하며 가상메모리, 메모리 할당 기법 등이 발달함. 가상 메모리가상 메모리는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매이 큰 메모리로 보이게 만드는 것. 이때 가상적으로 주어진 주소를 가상 주소라고 하며, 실제 메모리상에 있는 주소를 실제 주소(physical address)라고 함. 가상 주소는 메모리관리 장치(MMU)에 의해 실제 주소로 변환되며, 이덕 분에 사용자는 실제 주소를 의식할 필요 없이 프로그램 구축이 가능해짐.MMU프로세스는 독립적인 메모리 공간을 가져야 되고, 자신의 공간만 접근해야함따라서 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap..
전체 글
남들의 귀감이 될때까지!!메모리메모리는 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치를 말하며, 보통 RAM을 일컫어 메모리라고도 함. CPU는 계산을 담당하고, 메모리는 기억을 담당함 메모리 계층메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있음레지스터 : CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 용략 제일 적음캐시 : L1,2 캐시를 지칭함. 휘발성, 속도빠름, 기억 용략 적음주기억장치 : RAM을 지칭함, 휘발성, 속도 보통, 기억 용량 보통보조기억장치 : HDD, SDD를 일컫으며 비휘발성, 속도 낮음, 기억 용량이 많음캐시데이터를 미리 복샣 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상(Bottle neck)을 줄이기 위한 메모리임.이를 통해 데이터를..
CPU 스케줄링CPU 스케줄러는 CPU 스케줄링에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당함. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU를 줄 것인지 결정함. 이때 비선점형 알고리즘과 선점형 알고리즘으로 나뉘며 CPU를 할당함. 비선점형 방식비선점형 방식은 프로세스가 스스로 CPU 소유권을 포기하는 방식이며, 강제로 프로세스를 중지하지 않음. 따라서 context switching으로 인한 부하가 적음 FCFS(First Come First Served)큐에 도착한 순서대로 CPU를 할당함실행 시간이 짧은게 뒤로 가면 평균 대기 시간이 길어짐SJF(Shorest Job First)수행시간이 제일 짧다고 판단되는 작업을 먼저 수행함FCFS보다 평균 대기 ..
프로세스 동기화임계 영역(Critical Section)에 진입하는 프로세스를 관리하기 위해 Mutex, Semaphore방법을 사용하여 접근을 제어한다. 이때 lock을 사용하며 획득과 방출을 이용해 다중 프로세스 접근을 제어함. Semaphore(세마포어)소프트웨어상에서 Critical Section 문제를 해결하기 위한 동기화 도구간단한 정수 값과 두 가지 함수 wait(P함수) signal(V함수)로 공유 자원에 대한 접근을 처리함wait()는 자신의 차례가 올 때 까지 기다리는 함수이며, siganl()은 다음 프로세스로 순서를 넘겨주는 함수이다.OS 는 Counting/Binary 세마포를 구분한다카운팅 세마포가용한 개수를 가진 자원 에 대한 접근 제어용으로 사용되며, 세마포는 그 가용한 자원..
멀티 스레드>> 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것 스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 진행함. 스레드는 프로세스와 달리 코드,데이터,힙은 스레드끼리 서로 공유하며, 그 외의 영역은 각각 생성됨(ex. 스택) 멀티스레딩은 프로세스 내 작업을 여러개의 스레드, 멀티스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높음. 한 스레드가 중단(blocked) 된 상태여도 다른 스레드는 실행(running) 상태 일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하며, 동시성에도 큰 장점이 있습니다. 더보기동시성 : 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는 것Thread-safe..
멀티 프로세스란>> 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것 장점 : 안정성 (메모리 침범 문제를 OS차원에서 해결할 수 있음)단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량이 많을 수록 Context Switching으로 인한 성능 저하가 발생함, 캐쉬 메모리를 초기화 하는 부분에서 오버헤드가 발생할 수 있음. IPC(Inter Process Communication)IPC는 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 뜻함.IPC의 종류로는 공유 메모리, 파일, 소켓, 익명 파이프, 명명 파이프. 메세지 큐가 있음. 이들은 모두 메모리가 완전히 공유되는 스레드보다 속도가 떨어짐(스레드는 스택을 제외한 나머지 영역을 전부 공유..
운영 체제의 역할운영 체제의 역할은 크게 4가지가 있음1. CPU 스케줄링과 프로세스 관리2. 메모리 관리3. 디스크 파일 관리4. I/O 디바이스 관리프로세스프로그램을 메모리 상에서 실행 중인 작업, CPU의 스케줄링의 대상이 되는 작업을 의미함프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나며, 운영체제의 CPU스케줄러에 따라 CPU가 프로세스를 실행함스레드프로세스 안에서 실행되는 여러 흐름 단위기본적으로 프로세스마다 최소 1개의 쓰레드를 보유하고 있음(메인 스레드 포함) 프로세스는 독립적으로 작동하며 각각 별도의 주소공간을 할당함 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성 진행 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는 반면, 스레드는 다른 스레드..
경주로 건설문제 설명건설회사의 설계사인 죠르디는 고객사로부터 자동차 경주로 건설에 필요한 견적을 의뢰받았습니다. 제공된 경주로 설계 도면에 따르면 경주로 부지는 N x N 크기의 정사각형 격자 형태이며 각 격자는 1 x 1 크기입니다.설계 도면에는 각 격자의 칸은 0 또는 1 로 채워져 있으며, 0은 칸이 비어 있음을 1은 해당 칸이 벽으로 채워져 있음을 나타냅니다.경주로의 출발점은 (0, 0) 칸(좌측 상단)이며, 도착점은 (N-1, N-1) 칸(우측 하단)입니다. 죠르디는 출발점인 (0, 0) 칸에서 출발한 자동차가 도착점인 (N-1, N-1) 칸까지 무사히 도달할 수 있게 중간에 끊기지 않도록 경주로를 건설해야 합니다.경주로는 상, 하, 좌, 우로 인접한 두 빈 칸을 연결하여 건설할 수 있으며, 벽..
구현PCCP로 코딩테스트 역량을 보는 필기 시험이 있어서, PCCP를 준비하며 문제를 풀어봤습니다. https://programmers.co.kr/app/with_setting/tests/131575/challenges/algorithms/20179?language=python3 문제 풀이def solution(bandage, health, attacks): now_health = health # 최대 체력 attack_time = [i[0] for i in attacks] dealing = [i[1] for i in attacks] max_time = max([i[0] for i in attacks]) # 최대시간 bandage_time = bandage[0] # 시전 시간 ..