운영체제 16

[OS] 프로세스와 스레드

프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 data: 변수 및 초기화된 데이터 stack: 임시 데이터(함수 호출 및 로컬 변수 등) heap: 코드 내에서 동적으로 생성되는 데이터 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 역할에 따른 구분 사용자 프로세스 사용자 코드를 수행하는 프로세스 커널 프로세스 모든 메모리와 프로세스의 명령에 액세스할 수 있는 프로세스 실행 순서 제어 및 다른 프로세스의 접근 제어 사용자 프로세스 생성 프로세스의 상태 변화 New: 프로그램이 메인 메모리에 할당 Ready: 프로그램 초기화 등 모든 준비를 마친..

[OS] 프로세스 동기화

프로세스 동기화 프로세스 동기화란? 서로 협력을 하는 프로세스들이 순서나 규칙을 통해서 공유자원의 일관성을 보장하는 것입니다. 스타크래프트에서 한번 캐면 소멸되는 미네랄이 있습니다. 하지만 그 미네랄을 두고 착실한 2명의 scv가 서로 경쟁을 하면서 미네랄을 캐는데 프로세스 동기화가 되지 않아서 두명의 scv가 사이좋게 미네랄을 들고 있습니다. 이러한 문제를 해결하기 위해서 서로 규칙을 정해서 공유 자원의 신뢰성을 만드는것이 프로세스 동기화 라고 합니다. 경쟁 조건 (Race Condition)이란? 여러 프로세스가 공유 자원을 차지하려고 경쟁을 할때 프로세스가 공유 자원에 접근 순서에 따라 실행결과가 달라지는 경우입니다. 임계 구역 (Critical Section)이란? 프로세스간에 공유자원을 접근할떄..

[OS] 캐시 메모리

캐시 메모리 캐시 메모리란 주기억장치에서 자주 사용하는 프로그램 or 데이터를 저장해 속도를 빠르게 하는 메모리 주기억장치와 캐시 기억 장치 사이에서 정보 옮기는 행위를 사상(매핑)이라고 함 매핑의 3가지 방법 직접 매핑: 메인 메모리를 여러 구역으로 분할하여 캐시 슬롯과 매핑 장점: 절차가 단순하고 신속 단점: 높은 캐시 미스율 연관 매핑: 메인 메모리의 각 블록이 캐시 어느 슬롯이던 적재 가능 장점: 지역성 높은 접근 시 캐시 적중률이 높다. 단점: 구현이 어려워 구현 비용이 상승한다. 집합 연관 매핑: 캐시와 메모리가 M대 1로 대응한다. 장점: 앞의 두 가지 매핑 방법의 장점을 수용 단점: 구현 비용이 비쌈 캐시 메모리 교체 알고리즘의 종류 Random - 교체될 페이지를 임의 선정 - 오버헤드가..

[OS] 사용자 수준 쓰레드와 커널 수준 쓰레드

사용자 수준 스레드와 커널 수준 스레드 쓰레드는 뭐니? 프로세스 내 작업의 단위를 말함 하나가 될 수도 있고, 여러개(멀티쓰레드)가 될 수도 있음! 커널은 뭐니? 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 또한, 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다. 마찬가지로 운영체제 자체도 소프트웨어이기 때문에 전원이 켜짐과 동시에 메모리에 올라가야 한다. 하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심함 → 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라..

[OS] 메모리 관리 전략

메모리 관리 전략 메모리 관리가 필요한 이유? 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다. 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다. 효율적인 메모리 관리 3가지 동적적재 모든 프로그램을 적재하는것이 아니라 반드시 필요한루틴과 데이터만 적재하는 기법입니다. 루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들 입니다. 동적연결 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법입니다. 스와핑 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법입니다. 잦은 스와핑시에 단점 단편화 잦은 메모리 관리가 일어나면 메모리사이에 틈이 ..

[OS] 멀티 스레드

멀티 스레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 스레드 생성 비용이 적다. 프로세스 간 컨텍스트 스위칭 시 오버헤드가 크지만 스레드는 메모리를 공유하기 때문에 자원 소모가 적다. 처리 비용 및 응답 시간 단축 프로세스 간 통신(IPC)보다 스레드 간의 통신 비용이 적다. 스레드 간의 전환 속도가 훨씬 빠르다. 멀티 스레드 사용 시 주의할 점 힙 영역을 공유하기 때문에 힙 영역 자원 사용 시 동기화 필수 동기화를 위한 락이 과도하게 사용되면 성능이 저하된다. 일부 스레드가 종료되면 프로세스 전체가 종료될 수 있다.

[OS] 동기와 비동기의 차이

동기와 비동기의 차이 동기란? 동시에 일어난다는 뜻입니다. 어떠한 요청을 하였을때 응답(결과)을 한자리에서 동시에 일어난다는 뜻입니다.(한가지 일을 하면 결과가 나올때까지는 다른일은 정지가 된다는 뜻입니다.) 비동기 동시에 일어나지 않는다는 뜻입니다. 어떠한 요청을 하였을때 응답이 한자리에 동시에 일어나지 않아도 된다는 뜻입니다.(한가지일을 마칠동안 다른 일도 실행이 된다는 뜻입니다.) 동기의 장/단점 장점: 설계가 단순(직관)하다.(구성하기 쉽다.) 단점: 효율성이 떨어진다. 비동기의 장/단점 장점: 결과가 나오기까지 시간이 걸리지만 다른 작업을 수행할수 있다. (효율성이 좋다.) 단점: 각각의 일마다 결과시간이 달라서 설계가 복잡하다. 추가적인 궁금한부분 비동기와 병렬의 차이? 비동기는 눈속임으로 동..

[OS] 단편화

주기억장치 할당 기법 단일 분할 할당 기법 다중 분할 할당 기법 다중 분할 할당 기법 주기억장치에 여러 개의 프로그램 동시 적재 기법 다중 프로그래밍을 위한 기법 고정 분할 할당, 가변 분할 할당 MTF(Multiple contiguous Fixed parTition allocation, 고정 분할 할당) 기법 정적 할당 기법 분할된 메모리(크기 일정)에 배치 한 영역에 한 프로그램 적재 가능 단편화 발생 현재는 안 쓰임 단편화 할당과 반납의 과정에서 사용되지 않고 낭비되는 빈 공간 내부 단편화: 공간이 남는 것 외부 단편화: 공간이 작아서 할당을 못하는 것 분할된 메모리 영역 크기 4k, 프로그램 크기가 5K? 외부 단편화 분할된 메모리 영역 크기 4k, 프로그램 크기 2K? 내부 단편화 MVT(Mul..

[OS] 가상메모리

가상 메모리 물리적인 메모리의 크기 한계를 극복하기위한 기술입니다. 가상메모리를 사용하면 100MB메모리에 200MB의 프로세스를 수행할수 있습니다.(수행에 필요한 프로그램의 일부분을 메모리에 올리는 방법) 가상메모리가 구동하는 아이디어 cpu가 프로세스의 공간을 참조할때에는 먼저 가상메모리를 참조한다. 가상메모리는 실제 메모리를 참조한다. 1→2 의 변환과정을 빠르게 해주기 위해서 MMU라는 하드웨어칩을 지원받는다. MMU(Memory Management Unit): CPU에 코드 실행 시, 가상 주소 메모리 접근이 필요할 때 해당 주소를 물리 주소값으로 변환해주는 하드웨어 장치. 페이징 시스템(Paging System) 페이징 시스템은 가상메모리 구현에서 가장 많이 쓰이는 기술이다. Page : 고정..