1. 메모리 계층 구조 ① 사용 목적에 따라 메모리를 여러 계층으로 둠 ② 레지스터, 캐시 메모리, RAM, 하드 디스크로 구성 ③ CPU 접근 속도: 레지스터 > 캐시 메모리 > RAM > 하드디스크 2. 시스템 콜 ① 운영체제의 커널 모드에 접근해 필요한 기능을 수행하기 위해 프로세스에서 호출하는 함수 ② 프로세스 제어, 파일 조작, 장치 조작 등을 수행함 3. 프로세스 ① 실행 중인 하나의 프로그램으로, 하나 이상의 스레드를 가짐 ② PCB에 프로세스의 현재 상태, PID, 부모 PID 등을 저장함 ③ 프로세스마다 독립된 메모리 공간을 가짐- 스택: 지역 함수, 함수의 매개변수, 반환 주소 값 저장- 힙: 동적 메모리 할당- 데이터: 전역 변수, 정적 변수, 배열, 구조체 저장. 세부적으로 초기..
분류 전체보기
캐시 메모리: CPU와 메인 메모리 간에 데이터 접근 시 속도 차이를 줄이기 위해 사용-> 지역성을 고려해 자주 사용하는 데이터를 캐시 메모리에 따로 저장함 지역성: CPU가 자주 참조하는 데이터가 고르게 분포되지 않고 특정 부분에 몰려 있는 것- 시간 지역성: 최근 참조한 내용을 다시 참조할 가능성이 높음- 공간 지역성: 실제 참조한 주소 근처의 내용을 참조할 가능성이 높음 *캐시 메모리의 매핑 방식- 직접 매핑: 메인 메모리를 일정한 크기로 나누고 각 영역을 캐시 메모리에 매핑- 연관 매핑: 메모리 영역을 캐시 메모리에 규칙 없이 매핑하는 방식 - 집합 연관 매핑: 직접 매핑과 연관 매핑을 결합해 단점을 보완한 방식
가상 메모리: 프로세스의 일부만 메모리에 로드하고, 나머지는 디스크에 둔 상태로 프로세스를 실행장점 1. 프로그램이 메모리 크기에 대한 제약을 덜 받음장점 2. 동시에 많은 프로그램을 실행하므로 CPU 이용률과 처리율을 높임장점 3. 필요한 영역만 메모리에 로드해 스와핑 횟수를 줄여서 프로그램 실행 속도를 높임요구 페이징: 프로세스에 필요한 페이지만 메모리에 로드 페이지 폴트: 프로그램을 실행하다가 물리 메모리에 필요한 페이지가 없는 상황디스크에서 필요한 페이지를 스왑 인하여 페이지에 해당하는 메모리 영역이 물리 메모리에 있는지 확인하여 v(valid), i(invalid) 값을 반환스레싱: 동시에 일정 수 이상의 프로그램을 실행했을 때 페이징이 빈번하게 일어나 오히려 CPU 이용률이 떨어지는 현상 이를..
논리주소(가상주소): CPU가 프로세스를 실행하며 보는 주소 값물리주소: 실제 메모리에서 사용되는 주소 MMU(Memory Management Unit): 논리주소를 물리 주소로 변환하는 하드웨어 장치MMU는 CPU에 위치하며 보호해야 하는 메모리 영역에 대한 접근을 제한해 메모리를 보호함A) 연속 메모리 할당: 멀티 프로세스 환경에서 여러 프로세스를 메모리에 연속적으로 로드하는 방식 1. 고정 분할 방식: 메모리 영역을 분할한 뒤 각 영역에 프로세스를 할당하는 방식 단점) 메모리에 올릴 수 있는 프로세스의 수와 크기가 제한됨, 단편화 문제 발생 단편화 문제를 발생할 수 있는 방법 -> 메모리 압축(memory compaction) 2. 가변 분할 방식: 할당할 프로세스의 크기에 따라 메모리 공간을 분할..
OS의 주요 목적: 스케줄링을 통해 모든 프로세스를 공평하게 실행해 한정된 자원을 효율적으로 활용해야함. *스케줄링의 목적1. 공평성2. 효율성3. 안정성4. 반응 시간 보장5. 무한 연기 방지 *스케줄링의 단계1. 장기 스케줄링: 준비 큐에 어떤 프로세스를 넣을지 결정해 메모리에 올라가는 프로세스 수를 조절 (잡 스케줄링, 승인 스케줄링)2. 중기 스케줄링:메모리에 로드된 프로세스 수를 동적으로 조절. 메모리에 프로세스가 많이 로드되면 swap out해 일부 프로세스를 통째로 저장하여 중단상태로 변경함3. 단기 스케줄링:준비 큐에 있는 대기 상태 프로세스 중 어떤 프로세스를 다음으로 실행할지 스케줄링 알고르짐으로 결정 -> CPU 스케줄링 *스케줄링 알고리즘: CPU 스케줄러가 준비 큐에 있는 프로세스..
프로세스 관련 질문이 나왔을 때 이를 이용한 프로그래밍 경험을 함께 말해주면 좋다. process: 컴퓨터에서 실행 중인 하나의 프로그램program: 특정 작업을 수행하기 위한 명령어의 집합 *프로세스 메모리 영역 구조stack: 지역 변수, 매개변수, 반한되는 주소 값 등이 저장되는 영역높은 주소 값에서 낮은 주소 값으로 메모리가 할당됨. 영역 크기는 컴파일 때 결정됨-> LIFO 방식(후입선출) heap: 사용자에 의해 동적 메모리 할당이 일어나는 영역. malloc() 함수. 낮은 주소 값에서 높은 주소 값으로 메모리가 할당되며, 영역 크기는 런타임 때 결정됨-> FIFO 방식(선입선출) data: 전역변수, 정적변수, 배열, 구조체 등이 저장되는 영역. 데이터 영역은 세부적으로 BSS 영역[초기..
운영체제: HW 위에 설치되어 HW 계층과 다른 SW 계층을 연결하는 SW 계층-> 컴퓨터 시스템 자원을 관리하고, 사용자가 컴퓨터를 사용할 수 있는 환경을 제공ex) Windows, macOS, Linux, Unix 등 *운영체제의 목적1. 처리 능력 향상: OS는 자원 관리를 통해 일정 시간 내에 시스템이 처리하는 일의 양을 향상함. 2. 반환 시간 단축: OS는 사용자가 시스템에 요청한 작업을 완료할 때까지 소요되는 시간을 단축함.3. 사용 가능도 향상: 시스템 자원을 멀마나 빨리 제공할 수 있는가를 의미함.4. 신뢰도 향상: 입력 값에 대한 정확한 결과 값을 줄 수 있도록 신뢰도를 향상시킴. CPU(프로세서): 중앙 처리 장치로 컴퓨터에서 프로그램을 실행하는 데 필요한 연산을 처리하고 수행함. 메..
문제 설명정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.입출력 예 #1n이 10이므로 2 + 4 + 6 + 8 + 10 = 30을 return 합니다.입출력 예 #2n이 4이므로 2 + 4 = 6을 return 합니다. class Solution { public int solution(int n) { return (n / 2) * ((n / 2) + 1); }}이건 등차수열의 합을 이용하여 풀었다. Sn은 등차 수열의 합. n은 항의 개수, a1 은 첫번째 항, an은 마지막 항을 나타내면 Sn = n/2 x (a1 + an) 이렇게 나타낼 수 있으니까 a1을 0으로 지정하면 저렇게 나온다.