OS&네트워크 6

[네트워크] 라우팅 알고리즘(Routing algorithm), 다익스트라 알고리즘(Dijkstra algorithm)

Routing Methodologies라우팅 알고리즘은 아래와 같이 존재합니다.Non-adaptive (static) algorithmShortest path routingFlooding: selective floodingFlow-based routing Adaptive (dynamic) algorithmDistance vector routingLink state routingHierarchical routing + Dijkstra algorithm 하나씩 알아보도록 하겠습니다. * Shortest path routing 그래프 이론에서 두 정점 간에 최단 경로를 찾는 그래프 알고리즘을 이용한 라우팅입니다. 출발지로부터 최단 경로를 갖는 점들을 차례대로 찾아가면서 경로를 탐색합니다. 그래프에서는 각 노드..

OS&네트워크 2017.11.14 (2)

[네트워크] OSI 7 계층 모델

1. OSI model OSI(Open Systems Interconnection Reference Model) 모형은 ISO(국제표준화기구)에서 개발한 모델로써, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층으로 나누어 설명한 것입니다. 이를 일반적으로 OSI 7 계층 모형(OSI 7 layer model)이라고 합니다. 그렇다면, 여기서 계층(layer)라는 것은 무엇일까요?계층은 비슷한 함수, 즉 비슷한 기능을 하는 것들끼리, 모듈끼리, 객체끼리 그룹화 해놓은 것을 말합니다. What is the layer?The layer is a grouping of common functions, modules, objects(Object oriented language) OSI 7 layer model은 다음..

OS&네트워크 2017.11.13 (4)

운영체제 #4_ CriticalSection 에 대해서

CriticalSection에 대해서 공부하다가 의문점이 들어 알아보았습니다. 만약 1,2,3,4 라는 4개의 스레드가 존재했을 때, 1의 스레드에서 EnterCriticalSection을 두번 호출하고 LeaveCriticalSection을 한번 호출하면 2의 스레드에서 EnterCriticalSection을 호출하면 어떻게 되고 그 이유는 무엇일까요? 먼저 결과적으로는 2의 스레드에서 EnterCriticalSection을 호출하면 block처리가 됩니다.이유를 한번 알아보겠습니다.먼저 microsoft 공식문서에 업데이트된 Displaying a Critical Section을 통해 CriticalSection의 내부 구조를 살펴보면, lockCount와 OwningThread 멤버가 있는 것을 확..

OS&네트워크 2017.11.09

운영체제 #3_ 상호잠금, InterlockedIncrement 함수

이번에는 상호잠금 함수인 InterlockedIncrement에 대해서 알아보겠습니다.먼저 msdn에서 해당 함수를 살펴보면 아래와 같습니다. LONG __cdecl InterlockedIncrement(_Inout_ LONG volatile *Addend); 이를 살펴보면 해당함수는 LONG형(32bit) 포인터 변수를 인자로 받는다는 것을 알 수 있습니다.따라서 여러 스레드에서 공유되는 데이터의 값을 하나 씩 증가시킬때는,해당 데이터를 LONG형으로 선언하고 아래와 같이 사용하면 됩니다. InterlockedIncrement(&(LONG형 변수)); 추가적으로, 위와 같은 함수를 위에서 언급하였듯이 상호잠금 함수라고 합니다.값을 1씩 증가시켜주는 InterlockedIncrement() 함수 뿐 아니..

OS&네트워크 2017.11.09

운영체제 #2_ C언어를 통한 스레드/멀티스레드 예제

안녕하세요. 문범우입니다. 지난 포스팅에서 프로세스 및 스레드에 대한 개념을 정리해보았습니다.이번에는 스레드를 직접적으로 만들어서 확인해보도록 하겠습니다.실습은 C언어로 진행합니다.1. 싱글 스레드(Single-Thread) 먼저 싱글 스레드를 만들어서 확인해보도록 하죠.코드는 아래와 같습니다.123456789101112131415161718192021222324252627282930313233343536#define WIN32_LEAN_AND_MEAN#include #include #include DWORD WINAPI ThreadFunc(LPVOID);// DWORD는 더블워드 = long// WINAPI : Windows의 API// LPVOID : ms에서 사용하는 void* int global ..

OS&네트워크 2017.10.26 (2)

운영체제 #1_ 스레드와 프로세스, 멀티프로그래밍,멀티태스킹,멀티스레딩,멀티프로세싱

안녕하세요. 문범우입니다.이번 포스팅에서는 스레드(Thread) 와 프로세스(Process) 에 대해서 알아보겠습니다.스레드에 대해 좀 더 명확히 이해하기 위해서는 먼저 프로세스에 대한 개념이 필요합니다.따라서 프로세스, 스레드, 멀티 프로세싱, 멀티 프로그래밍, 멀티 태스킹, 멀티스레딩, 프로세스와 스레드 차이 순으로 알아보도록 하겠습니다. 1. 프로세스(Process)프로세스에 대한 설명을 먼저 위키백과에서 어떻게 하고 있는지 확인해볼게요. 프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러개의 프로그램을..

OS&네트워크 2017.10.26