분류 전체보기121 [운영체제] Multi Process vs Multi Thread 멀티 프로세스 대신 멀티 스레드를 사용하면 메모리 공간과 시스템 자원 소모가 줄어들지만 스레드간 자원을 공유하기 때문에 동기화 문제가 발생할 수 있다(하나의 스레드가 망가지면 다른 스레드도 문제가 생길 수 있다).Context Switching시 캐시 메모리를 초기화할 필요가 없어서 속도가 빠르다. 2024. 9. 13. [운영체제] Multi thread thread란??thread는 process내에서 실행되는 함수의 단위이다. thread는 process의 Stack을 제외한 code,data,heap를 공유한다. 쉽게 말하면 운영체제의 작업 단위는 process.process의 실행 단위는 thread. (대부분의 프로세스는 멀티스레드) 그리고 thread는 독립적인 stack memory가 필요하다.이유는 process내에서 독립적인 기능을 실행하기 때문에 독립적인 memory가 있어야 한다.Multi thread란??하나의 process가 동시에 여러개의 일을 수행할수 있도록 해주는 것 이러한 이유 때문에 multi thread에서는 각각의 thread마다 PC register를 가지고 있어야한다.process와 같이 thread끼리도 conte.. 2024. 9. 13. [운영체제] Multi process Multi process란?2개 이상의 Process가 동시에 실행되는 것 동시에 실행되는 것에는 동시성과 병렬성이 있다.CPU 코어가 1개일때 여러 process를 짧은 시간동안 번갈아 가면서 연산을 하게 되는 동시성과CPU 코어가 여러개일때 각각의 코어가 각각의 프로세스를 연산하면서 프로세스가 동시에 실행되는 병렬성 그럼 이렇게 왔다갔다 하면서 하나의 프로세스가 어디까지 뭘했는지(context: 프로세스가 현재 어떤 상태로 수행되고 있는지에 대한 정보) 어떻게 알아?PCB(Process Control Block)라는곳에 context 정보들을 저장- Process number- Process state (실행, 준비, 봉쇄) (running, ready, (wait,sleep,blocked))- PC.. 2024. 9. 12. [운영체제] Process Process란??실행파일(프로그램)이 메모리(RAM)에 적재되어 CPU를 할당받아 실행되는 것 Process에 할당되는 메모리 공간은 쉽게 아래의 그림처럼 나타낼 수 있다 code는 우리가 적은 코드가 compile되어 저장되어 있는 곳전역변수 같은 경우는 data에 저장지역변수나 매개변수는 stack에 저장 (compile time)heap에는 동적 메모리들을 저장 (runtime) PC register에는 다음에 실행될 코드의 주소값이 저장되어있다.메모리에 적재되어 있는 process code영역에서 다음번 CPU연산에서 읽어야할 명령어의 주소값을 PC register가 순차적으로 가리키고 해당 명령어를 읽어와서 CPU가 연산을 하게 되면 process가 실행 2024. 9. 12. [자료구조] Array vs Linked list 일단 Array는 메모리 상에서 연속적으로 데이터를 저장하는 자료구조이고 Linked List는 메모리 상에서는 연속적이지 않지만 각각의 Node가 다음 메모리 주소값을 저장하고 있으므로 논리적으론 연속적이다. 그리고 데이터 조회는 Array의 경우 O(1) (random access), Linked List는 O(n) (순차 접근)의 시간복잡도를 갖습니다.삽입/삭제의 경우는 Array는 O(n), Linked List는 O(1)의 시간 복잡도를 갖습니다. 따라서 얼만큼의 데이터를 저장할지 예상이 되고 조회를 많이 한다면 Array를 사용하고얼만큼의 데이터를 저장할지 예상이 되지 않고 삽입/삭제가 많다면 Linked List를 사용하는 것이 유리 Array는 compile 시간에 Stack 메모리에 할당.. 2024. 9. 12. [자료구조] Linked List Linked List란? (tree와 graph를 구현할때 자주 사용)Linked List는 Node라는 구조체로 이루어져 있고 Node는 데이터 값과 다음 Node의 주소값으로 이루어져 있다.물리적인 메모리상으로는 비연속적으로 저장되지만 각각의 Node가 다음 Node를 가르키기 때문에 논리적으로는 연속성을 가진 자료구조다. 시간복잡도데이터 삽입: O(1) -> Node의 다음 주소값만 바꿔주면 되기 때문에데이터 삭제: O(1) -> Node의 다음 주소값만 바꿔주면 되기 때문에데이터 조회: O(n) -> 첫번째 노드부터 순차적으로 검색데이터 검색: O(n) 2024. 9. 11. [자료구조] Dynamic Array Dynamic Array란?Array랑 다르게 저장공간이 가득 차게 되면 resize를 하여유동적으로 size를 조절하여 데이터를 저장하는 자료구조 그럼 resize는 어떻게 하는건데요??예를들어 사이즈가 10인 배열이 있는데 11개의 데이터를 넣으려고 하면 들어가지 않는다.이때 resize가 실행되는데 사이즈가10개인 배열보다 더 큰 배열을 선언하고 원래 데이터들을 새로 생성된 데이터에 옮긴 후 원래 배열을 지운다. resize를 하는 방법은 여러가지가 있는데 대표적으론 doubling(기본 Array size의 2배를 할당)이 있다. (O(n)) 시간복잡도resize 할땐 O(n)resize는 가끔 발생하므로 O(1)로 생각그 외엔 Array랑 같음 2024. 9. 11. [자료구조] Array Array란?연관된 데이터들을 모아서 메모리상에 연속적이며 순차적으로 미리 할당된 크기만큼 저장하는 자료구조Array의 특징은 위에서 설명했듯이 - 고정된 저장 공간- 순차적인 데이터 저장 그럼 미리 예상한 것보다 더 많은 수의 데이터를 저장하느라 Array의 크기를 넘어스면 어떻게 해결하냐?방법1.(Dynamic Array)기존의 크기보다 더 큰 Array를 선언하여 데이터를 옮기고 기존 Array는 메모리에서 삭제하면 됩니다. 이렇게 동적으로 배열의 크기를 조절하는 자료구조를 Dynamic Array라고 합니다. 방법2.(Linked List)애초에 크기를 예측하기 쉽지 않다면 Array 대신 Linked List를 사용하면 됩니다. Array의 장점은 조회와 마지막 인덱스에 추가, 삭제가 빠르다.. 2024. 9. 11. 이전 1 2 3 4 5 6 ··· 16 다음