전체 글 182

[운영체제] 단편화

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

Computer Science 2022.03.05

[운영체제] 메모리 관리 전략

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

Computer Science 2022.03.04

[운영체제] 프로세스 동기화

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

Computer Science 2022.03.04

[운영체제] Context Switching, 컨텍스트 스위칭

컨텍스트(Context)란? CPU가 해당 프로세스를 실행하기 위한 해당 프로세스의 정보들을 말함 이러한 컨텍스트는 프로세스의 PCB(Process Control Block)에 저장된다. 그렇기 때문에 이전 작업을 PCB에서 불러와서 이어서 하는 작업이 가능하다. 컨텍스트 스위칭(Context Switching)? 프로세스의 정보의 교체??? 멀티프로세싱하기 위해 CPU를 나눠서 사용하기 위해 Context를 교체하는 것이 Context Switching 단점 Context Switching 때 해당 CPU는 아무것도 못함. → 그래서 빈번하게 스위칭이 발생하면 오버헤드가 발생해 효율 및 성능이 저하된다. 🚩오버헤드란 ? 오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 ·..

Computer Science 2022.03.03

[운영체제] 동기와 비동기의 차이

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

Computer Science 2022.03.03

[운영체제] Multithread, 멀티쓰레드

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

Computer Science 2022.03.02

[운영체제] 사용자 수준 쓰레드와 커널 수준 쓰레드

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

Computer Science 2022.03.02

[운영체제] 프로세스와 쓰레드의 차이

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

Computer Science 2022.03.01

[TFAE] 자바 main 메서드에서 static을 왜 쓰는걸까?

static으로 선언된 변수, 함수(메서드)는 자바 버츄얼 머신에서 인스턴스 객체의 생성없이 호출 할 수 있다. public class Test { public static void main(String[] args) { System.out.println("Hello, World"); } } static이 없으면 Test 객체를 생성해서 내부 함수인 main을 호출해야 한다. class는 공장, 공장에서 만들어진 것이 객체, 객체는 인스턴스(Instance) * 공장(Class)내에 사칙연산 메서드가 있다고 해보자. 덧셈, 뺄셈, 곱셈, 나눗셈 일반적인 메서드 사용법 : 공장에서 객체를 하나 생성함으로써 메서드를 사용할 수 있게끔 하는 것. 즉, 클래스에서 객체 생성 후 -> 메서드 사용 * static..