본문 바로가기

컴퓨터공학5

자료구조 : 연결리스트 (Linked list) 자료를 저장하는 방법 중 크게 배열과 연결리스트가 있습니다. 그럼 언제 배열을 사용하고 언제 연결리스트를 쓸까요? 먼저 두 자료구조의 장, 단점에 대해 알아보겠습니다. 표1 배열, 연결리스트 장점 및 단점 배열은 접근이 빠르고 간단합니다. n번째 인덱스에 접근할 경우 arr[n]을 사용하면 빠른 시간에 접근할 수 있습니다. 그러나 배열을 사용하기 위해서는 처음에 배열의 크기를 선언해야 하고 크기의 수정이 불가능하기 때문에 메모리 사용이 비효율적입니다. 또한 중간 데이터를 삭제 했을때 빈 배열을 처리하는 것이 번거롭습니다..( 자료구조를 공부해보신 분이라면 이해하실 겁니다ㅠ) 그러나 연결리스트는 위의 단점을 해결할 수 있습니다. 필요할때마다 데이터를 생성하여 연결하면 되기 때문에 메모리를 효율적으로 사용가.. 2017. 11. 8.
세마포어(Semaphore)와 뮤텍스(Mutex) 여러 쓰레드들은 자원을 공유하고, 프로세스간 메시지를 전송하면서 간혹 문제가 발생할 수 있습니다. 즉, 공유된 자원에 여러 프로세스 , 쓰레드가 동시에 접근하면서 문제가 발생합니다. 공유된 자원 속 하나의 데이터는 한번에 하나의 프로세스만 접근할 수 있도록 제한해 두어야 할 필요성이 있는데이를 위해 고안된 것이 Semaphore(세마포어)입니다. 유명한 화장실 예제로 쉽게 설명해보겠습니다. 공중 화장실은 한번에 1명만 사용할 수 있다고 가정하겠습니다.어떤 사람이 사용하고 있는데 다른 누군가가 갑자기 들어와서 같이 쓰자고 하면... 생각만해도 이상하지요..?이를 막기 위해 화장실 열쇠를 만들 수 있습니다.열쇠를 가지고 있는 한 사람만 화장실을 이용하고, 열쇠가 없는 사람은 밖에서 대기를 하죠. 여기서 열쇠.. 2017. 10. 13.
메모리 관리기법, 페이징과 세그멘테이션 메모리의 용량은 한정적이므로 여러 응용 프로그램의 사용을 위해 효율적인 메모리 관리 기법이 필요합니다. 메모리 관리기법을 효율적으로 사용하여 외부 및 내부 단편화를 해결할 수 있습니다. 메모리 관리기법은 여러가지 있는데 그 중 가장 많이 쓰이는 것은 가상 메모리관리 기법입니다. 이와 관련된 페이징 , 세그멘테이션기법을 살보겠습니다. Paging(페이징) 물리메모리를 사용할 때, 페이지를 고정크기의 프레임단위로 나눕니다.논리메모리도 같은 프레임단위인 페이지로 나누어 프레임과 페이지를 대응하게 하여연속적인 물리메모리가 아니더라도 원하는 크기의 프레임을 사용할 수 있도록 하는 기능입니다. 프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록 .. 2017. 10. 9.
외부단편화와 내부단편화 외부단편화 (External fragmentation) 프로그램을 할당하고 난 다음 아주 작은 크기로 남은 조각들이 생겨 사용할 수 없는 작은 공간들이 많이 생길 수 있습니다. 이 공간들을 합치면 요구되는 공간을 할달할 수 있음에도 불구하고 연속적인 공간이 아니라서 할당하지 못하는 상황을 외부 단편화라고 합니다. 아래 그림을 통해 살펴보겠습니다. 프로세스 A,B,C사이의 총 8K의 공간이 남아있습니다. 프로세스 D는 7K의 공간을 필요로 하므로, 남은 공간은 충분합니다. 그러나 분할하여 할당할 수 없으므로 프로세스D를 할당할 수 없는 문제가 발생합니다. 내부단편화 (Internal fragmentation) 메모리를 할당하는 최소 블록 크기를 10K라고 가정합시다. 만약 7K만큼의 공간을 사용하더라도 1.. 2017. 10. 7.
프로세스(Process)와 쓰레드(Thread) 프로세스와 쓰레드가 각각 무엇인지, 어떤 차이점이 있는지 알아보겠습니다. 한 문장으로 설명하면 다음과 같습니다. 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위 그림으로 나타내면 아래와 같습니다. [Process]프로세스는 운영체제로부터 주소공간, 파일, 메모리 등을 할당 받습니다.그러므로 각 프로세스는 독립적이며 자신만의 고유 메모리를 할당받아 사용합니다. 그리고 프로세스는 실행중인 프로그램을 의미합니다. 그러므로 프로세스는 프로그램이 될 수 있지만, 프로그램은 프로세스가 될 수 없습니다. 실행중이지 않은 프로그램도 존재하기 때문입니다. [Thread]그러나 쓰레드는 프로세스 안에 존재하며, 여러 쓰레드가 자원을 공유할 수 있습니다. 쓰레.. 2017. 10. 4.
반응형