[운영체제] 메모리 관리
메모리 계층 구조와 메모리 핵심 관리 1) 메모리 계층 구조 메모리는 컴퓨터 시스템 여러 곳에 계층적으로 존재 cpu 레지스터 - cpu 캐시 - 메인 메모리 - 보조기억장치 보조기억장치로 갈수록 용량 증가, 가격 저렴, 속도 저하가 있음 메모리 계층화의 목적 : CPU의 메모리 엑세스 시간을 줄여 빠른 프로그램 실행 CPU 레지스터 L1/L2 캐시 L3 캐시 메인 메모리 보조기억장치 용도 몇 개의 명령과 데이터 저장 한 코어에서 실행되는 명령과 데이터 저장 멀티 코어에 의해 공유, 명령과 데이터 저장 실행 중인 전체 프로세스들의 코드와 입출력 중인 파일 블록 저장 파일이나 데이터베이스, 메모리에 적재된 프로세스의 코드와 데이터 일시 저장 용량 바이트 단위 KB 단위 MB 단위 GB 단위 TB 단위 타입..
- Computer Science/Operating System
- · 2023. 7. 22.
1260번 - DFS와 BFS
문제 입출력 풀이 DFS - 깊이 우선 탐색 BFS - 너비 우선 탐색 #include #include using namespace std; int N, M, V; // 정점개수, 간선개수, 시작정점 int map[1001][1001]; // 인접 그래프 bool visited[1001]; // 방문 여부 queue q; void reset() { for (int i = 1; i > a >> b; map[a][b] = 1; map[b][a] = 1; } reset(); DFS(V); cout
- Problem Solving/C++
- · 2023. 7. 17.
[운영체제] 교착상태
교착상태 문제 제기 1) 실생활에서 발생하는 교착상태 밥을 먹기 위해 숟가락, 젓가락 모두 필요한 상황에서 한 사람은 숟가락을 다른 한 사람은 젓가락을 소유할 경우 숟가락이나 젓가락을 사용할 수 있을 때까지 대기 → 무한 대기 발생 교착 상태 : 자원을 소유한 채, 모두 상대방이 소유한 자원을 기다리면서 무한 대기 2) 식사하는 철학자 문제 5명의 철학자가 원탁에서 식사, 식사 시간은 서로 다름 자리마다 스파게티 1개와 양 옆에 포크가 있으며 각 철학자는 옆 철학자와 대화 불가능 식사를 하기 위해서는 양 손에 포크가 동시에 들려 있어야하며 왼쪽 포크를들고 다음 오른쪽 포크를 드는 순서 포크가 사용 중일 경우 대기 → 모든 철학자가 동시에 같이 자리에 앉아 식사를 할 경우 모두 왼쪽에 포크를 들어 무한 대..
- Computer Science/Operating System
- · 2023. 7. 17.
[운영체제] 스레드 동기화
스레드 동기화의 필요성 1) 동기화의 필요성 다수의 스레드가 동시에 공유 데이터 접근 → 공유데이터의 훼손 스레드 동기화 (thread synchronization) 공유데이터에 대한 다수의 스레드가 동시에 접근할 때 공유데이터가 훼손되는 문제의 해결책 공유데이터를 집근하고자 하는 다수의 스레드가 충돌없이 공유데이터에 접근하기 위해 상호 협력하는 것 2) 공유데이터 접근 문제의 해결책 여러 스레드가 공유 변수에 접근할 때, 공유 데이터 훼손 스레드 동기화 → 한 스레드가 공유데이터의 접근을 마칠 때까지 → 다른 스레드가 공유데이터를 접근하지 못하도록 제어 멀티 스레드의 경쟁 상황이 자주 발생 → 커널 안의 공유 데이터가 많아 자주 발생, 다중 코어에 더욱 조심해야함 3) 임계 구역과 상호 배제 #1 임계..
- Computer Science/Operating System
- · 2023. 7. 16.
First Come First Served (FCFS) 구현
First Come First Served #1 입력 첫째 줄 : 입력 받을 스레드 개수 각 스레드 별 입력 데이터 첫 번째 - 스레드 번호 두 번째 - 도착 시간 세 번째 - CPU 사용 시간 입력 예제 4 0 0 40 1 10 25 2 20 30 3 25 5 #2 출력 각 스레드의 대기시간과 완료시간 출력 출력 예제 0 40 30 65 45 95 70 100 #3 구현 #include #include #include using namespace std; struct thr { int num; // 스레드 번호 int start_t; // 스레드 도착 시간 int run; // CPU 사용시간 }; int n; // 입력받을 스레드 개수 저장 vector v; // 대기시간, 완료시간 저장 벡터 que..
- Computer Science/Operating System
- · 2023. 7. 11.