분류 전체보기
-
7. 메모리 관리 기법(2) - 스와핑, 연속 메모리 할당전공공부/운영체제 2019. 12. 25. 22:41
메모리 관리 기법 메모리 관리의 목적 제한된 물리 메모리의 효율적인 사용이 목적 (할당) - 여러개의 프로세스에게 효율적으로 할당 해야 한다. 효율적인 메모리 참조 (논리 - 물리 주소 변환) - 프로세스가 메모리 주소를 직접적으로 첨조하는 것이 아니라 프로세스의 주소 공간이란 것과 메모리의 주소공간이란 것을 구분하고 있기 때문에 좀 더 빠르게 메모리 주소를 참조할 수 있는 관리 방법도 추가적으로 필요하다. 주요 메모리 관리 기법 스와핑 (Swapping) 연속 메모리 할당 (Contiguous memory allocation) 페이징 (Paging) 세그멘테이션 (Segmentation) 스와핑 부족한 메모리 공간을 좀 더 효율적으로 관리하려는 메모리 관리 기법. CPU에서 시행되지 않는 프로세스 즉 ..
-
7. 메모리 관리(1) - 메모리의 기본 구조와 동작전공공부/운영체제 2019. 12. 25. 20:23
메모리의 기본개념 메모리는 CPU와 같은 반도체 하드웨어로서 일종의 데이터를 저장하는 저장장치 역할을 수행한다. 데이터를 읽고쓰는 속도가 매우 빠르며 cpu가 직접 접근이 가능하다. 또한 전원이 꺼지면 저장 돼 있던 데이터가 모두 사라지는 특성을 가지고 있기때문에 단순히 주소로서만 접근하는 저장공간이라고 할 수 있다. 소프트웨어 즉 프로그램이 실행되기 위해서는 반드시 그 내용이 메모리에 저장돼야 하고 컴퓨터의 메모리관리를 통해 하드웨어는 CPU가 주소만을 가지고 메모리에 있는 데이터를 읽거나 쓸 수 있도록 도와줘야만 한다. 운영체제의 메모리 관리라는 것은 프로세스가 필요한 메모리를 어떻게 얼마만큼 할당해 줄 것인가, 프로세스가 알고있는 주소를 통해서 실제 메모리에 어떻게 접근하도록 하는 것인가 라는 할당..
-
6. 교착상태 (데드락)전공공부/운영체제 2019. 12. 24. 19:22
교착상태 (Deadlock) 운영체제 (또는 소프트웨어)에서 자원을 사용할 때, 두 개 이상의 작업이 순차적으로 상대방의 작업이 끝나기를 기다리면서, 아무것도 진행되지 않는 상태를 말한다. 교착상태 발생 조건 교착상태는 다음 네 가지 조건이 모두 성립될 때 발생한다. 1. 상호 배제 (Mutual exclusion) 한 번에 하나의 프로세스만 공유 자원을 사용할 수 있다. 2. 점유 대기 (Hold and Wait) 각 프로세스가 하나의 자원을 점유하고 있으면서, 다른 프로세스가 사용하고 있는 자원을 추가로 점유하기 위해 대기한다. 3. 비선점 (No preemption) 각 프로세스는 다른 프로세스가 사용하고 있는 자원을 강제로 빼앗을 수 없다. 4. 순환 대기 (Circular wait) 각 프로세스..
-
5. 세마포어, 뮤텍스전공공부/운영체제 2019. 12. 24. 19:00
세마포어와 뮤텍스의 차이점 세마포어 (Semaphore) Signaling mechanism. 일종의 카운터로서 Critical Section에 프로세스(스레드)가 동시에 N개 접근할 수 있다. 카운터 값이 0과 1로만 제한되면 Binary semaphore이며, 그 이상의 값을 가지면 Counting semaphore이다. 뮤텍스 (Mutex) Locking mechanism. 락(Lock)을 가진 하나의 프로세스(스레드)만 크리티컬 섹션에 접근할 수 있다. Binary semaphore로 구현될 수 있다. 뮤텍스 (Mutex) 세마포 (Semaphores) 공유된 자원의 데이터를 여러 스레드가 접근하는 것을 막는것 공유하는 자원의 데이터를 여러 프로세스가 접근하는 것을 막는것 뮤텍스는 lock,unl..
-
4. 프로세스 동기화전공공부/운영체제 2019. 12. 24. 18:41
동기 vs 비동기 동기와 비동기를 구분하는 기준은 작업 순서이다. 동기식 모델은 모든 작업들이 순서를 따르며 그 순서에 맞게 동작한다. 즉 A,B,C순서대로 작업이 시작되었다면 A,B,C순서로 작업이 끝나야 한다. 설령 여러 작업이 동시에 처리되고 있다고 해도, 작업이 처리되는 모델의 순서가 보장되면 이는 동기식 처리 모델이라고 할 수 있다. 반면 비동기식 모델은 작업의 순서가 보장되지 않는다. A,B,C순서로 작업이 시작되어도 A,B,C 순서로 작업이 끝난다고 보장할 수 없다. 비동기식 처리 모델이 이득을 보는 경우는 각 작업이 분리될 수 있으며, Latency(내부지연시간)가 큰 경우이다. 예를들어 각 클라이언트 또는 작업별로 Latency가 발생하는 네트워크 처리나 파일 입출력등이 훌륭한 적용 예시..
-
#1520 내리막길Code/BOJ 2019. 12. 19. 20:33
알고리즘 핵심: 백트래킹! 계속 dfs,bfs로 문제를 풀다가 오랜만에 dp를 활용한 백트래킹 방법을 적용하였습니다. DFS를 통해 목적지까지 탐색하였고 탐색을 하면서 방문(visit[x][y]>=0)표시를 해나갔습니다. 그 후 목적지인 오른쪽 하단에 도착하면 1을 리턴하였고 범위를 벗어나는 영역은 0을 리턴하였습니다. 그 외에 방문이 돼 있는 지역이 next x,y로 선정이 되어 재귀함수를 통해 x,y가 된다면 방문이 돼 있는 지역이므로 백트레킹을 적용하여 그떄의 visit[x][y](이전의 visit[nx][ny]값이라고 보면 됨) 를 리턴하였습니다. 그리고재귀를 통해 백트래킹을 적용한 함수 호출하는 부분은 visit[x][y]=visit[x][y]+dfs(nx,ny)이렇게 설정하면 백트래킹을 하면서..
-
3. CPU 스케줄링전공공부/운영체제 2019. 12. 19. 19:26
앞서 운영 체제의 기능을 배우면서 CPU와 메모리 보조기억장치 와의 관계를 보았으며 이들 사이에 시스템 호출, 메모리 할당등을 하면서 CPU 스케줄링 관리, 메모리 관리, 파일 및 입출력 관리가 필요하다는 것을 알게 됐다. 그렇다면 CPU 스케줄링이 무엇일까? CPU 스케줄링 메모리에 있는 준비(Ready)상태의 프로세스 중 하나를 선택 해 CPU의 자원을 할당하는 방법이다. CPU 스케줄링이 일어나는 시점 CPU자원을 가지고 있다가 뺴앗길 수 있는 상황은 다음과 같다. 1. 실행(Running)상태에서 대기(Waiting)상태로 전환될 때 (예, 입출력 요청) - 비선점 2. 실행(Running)상태에서 준비(Ready)상태로 전환될 때 (예, 인터럽트가 발생할 때) - 선점 3. 대기(Waiting)..
-
2. 프로세스와 스레드 (Process vs Tread)전공공부/운영체제 2019. 12. 18. 09:57
프로그램(Program)이란 "어떤 작업을 위해 실행할 수 있는 파일"로써 생명력이 없으며 보조기억장치에 존재하며 실행되기를 기다리는 명령어와 정적인 데이터의 묶음이다. 프로세스(Process)란 의미 "메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)"로써 하드디스크에 저장 돼 있는 코드뭉치, 정적인 데이터가 메모리에 할당되어 생명력이 있는 프로세스가 된다. 즉 운영체제로부터 시스템 자원을 할당받는 작업의 단위이며 실행된 프로그램을 의미한다. 스택: 복귀주소와 로컬 변수와 같은 임시적인 자료를 가진다. 데이터: 전역변수 수록 힙: 실행전에 동적으로 할당되는 메모리영역 함수 호출 시 스택/ 동적할당 시 힙을 사용한다. 참고 할당받는 시스템 자원의 예 CPU 시간/ 운영되기 위해 필요한 주..