package main import "fmt" func main() { fmt.Println("Hello 월드") } 1. package main main이라는 이름을 가지는 package를 선언한다. 일반적으로 패키지는 라이브러리로서 사용되지만, "main" 이라고 명명된 패키지는 Go 컴파일러에 의해 특별하게 인식된다. 패키지명이 main 인 경우, 컴파일러는 해당 패키지를 공유 라이브러리가 아닌 실행(executable) 프로그램으로 만든다. 2. import "fmt" 선언한 패키지 내에 "fmt"라는 표준 패키지를 포함시킨다. 여러 패키지를 import 하는 경우 아래와 같은 형태로 작성할 수 있다. import ( "a" "b" "c" ) 3. func main(){} 패키지 이름으로서의 ma..
1. 페이징이 필요한 이유 1) 메모리 단편화 메인 메모리에 여러 프로세스를 연속적으로 할당한 후에 몇몇 프로세스를 종료하게 되면 프로세스들이 종료된 자리 앞 뒤로는 다른 프로세스가 여전히 올라가 있고 종료된 자리만 비게 된다(Hole). 이 빈자리들이 다양한 크기로 여러 개 생기게 될 경우 빈자리들의 총합이 다음에 올라갈 프로세스보다 큼에도 불구하고 맞는 자리가 없어서 프로세스가 올라오지 못하는 현상이 발생하게 되는 것을 외부 단편화라고 한다. (external fragmentation) 단편화가 발생할 경우 메모리를 효율적으로 사용할 수 없게 된다.(일반적으로 1/3 정도를 못쓰게 된다고 함.) 2. 페이징 1) 프로세스를 일정 크기로 쪼갠 것을 page라고 하고 메모리를 일정 크기(page의 크기와..
1. 메모리 구조 - 주소(Address) + 데이터(Data) 2. 프로그램 개발단계의 파일 종류 - 원천파일(Source file) : 고수준 언어 또는 어셈블리언어로 작성된 파일 (컴파일러, 어셈블러) - 목적파일(Object file) : 컴파일 또는 어셈블 결과 (링커 ) - 실행파일(Executable file) : 링크(라이브러리와 목적파일의 연결) 결과 (실행파일을 로더를 통해 메인메모리에 올림) 3. 프로그램 실행단계의 메모리 영역 - code(기계어로 된 로직이 있는 영역) + data(연산을 위한 데이터가 있는 영역) + stack(지역변수, 돌아올 지점 저장) 4. MMU(Memory Management Unit) - base register - limit register - rel..
1. 교착상태의 필요 조건 아래 네가지 조건이 모두 충족 된다면 교착상태가 일어날 수 있다. 1) Mutual exclusion(상호배타) 어떤 자원을 한 프로세스가 사용하고 있다면 다른 프로세스가 사용할 수 없는 상태 (한 철학자가 젓가락을 들었다면 그 젓가락은 다른 철학자가 사용할 수 없음) 2) Hold and wait(보유 및 대기) 한 자원을 보유하고 있는 상태로 나머지 자원이 충족되기를 기다리고 있는 상태 (각 철학자가 모두 왼쪽 젓가락을 든 채로 오른쪽 젓가락을 기다리고 있음) 3) No Preemption(비선점) 다른 프로세스가 사용 중인 자원을 강제로 뺏을 수 없는 상태 (다른 철학자가 들고 있는 젓가락을 강제로 가져올 수 없음) 4) Circular wait(환형대기) 자원과 자원을 ..
1. 물리 계층(physical layer) 1) 데이터가 네트워크 인터페이스를 통해 물리적으로 전송되는 유일한 계층. 2) 케이블, 커넥터, 네트워크 인터페이스 카드 등 하드웨어 장비 동작의 세부사항을 정의한다. 3) 컴퓨터나 기타 장비에 존재하는 0과 1로 된 비트 데이터를 네트워크를 통해 전송하기 위한 신호로 변환하여 송신하고 수신한 네트워크 신호를 비트 데이터로 변환하여 데이터 링크 계층에 전달한다. 2. 데이터 링크 계층(data link layer) 1) 네트워크의 로컬 장비 간 논리적 연결을 수립하고 제어하는 역할을 한다.(Local Link Control) 2) 상위에 있는 네트워크 계층에게 필요한 서비스를 제공하며, 데이터 링크 계층의 세부적인 정보를 감춰 서로 다른 기술이 상위 계층과 ..
1. OSI 계층에서의 인터페이스 인접한 계층(N+1 혹은 N-1층) 간의 통신 방식. OSI 참조 모델은 다양한 계층의 구현 간 상호작용을 가능케 한다는목적을 지니므로 계층을 서로 잘 연결하기위해 일관되고 문서화된 인터페이스가 필요하다. 또한 인터페이스가 존재함으로써 상위 계층은 하위 계층의 세부 구현에 대한 지식 없이도 여러 하위 계층 서비스를 이용할 수 있게 된다. 2. OSI 계층에서의 프로토콜 네트워크 장비의 동일 계층에서 운영 중인 소프트웨어나 하드웨어 간의 통신을 정의하는 규칙이나 절차 모음을 가리킨다. 각 장비에 있는 동일한 계층은 1계층에서만 물리적으로 연결되어 있는 상태로 논리적인 통신을 한다.(수평적 통신) 3. 포워딩과 라우팅 인터네트워크(네트워크의 네트워크)가 존재할 때 한 네트워..