본문 바로가기

분류 전체보기

(26)
Call By Value vs Call By Reference Call By Value vs Call By Reference 메소드의 인자 호출 방식에는 Call By Value(값에 의한 호출)와 Casll By Reference(참조에 의한 호출) 두 가지 방식이 있습니다. Call By Value 메소드 호출 시에 사용되는 인자의 메모리에 저장되어 있는 값을 복사하여 보내는 방식입니다. 메소드 인자로 byte, char, short, int, long, float, double, boolean 등 자바 기본 타입(Primitive Type)이 전달되는 경우에는 인자의 값(상수 값)이 복사되어 전달됩니다. 메소드 인자로 객체에 대한 레퍼런스(Reference Type)가 전달되는 경우에는 객체 자체가 복사되어 전달되는 것이 아니라, 그 객체를 가리키는 레퍼런스 ..
JAVA vs C++ JAVA vs C++ Java와 C++은 문법적으로 상당히 유사하며 같은 객체 지향 언어라는 점에서 공통점이 있습니다. 하지만, 차이점도 극명하게 존재합니다. Java와 C++의 차이점 상속 C++은 다중 상속을 지원하지만 Java는 지원하지 않습니다. 다중 상속을 지원하는 언어에서는 다이아몬드 문제(Diamond Problem)이 발생하는데, C++에서는 다이아몬드 문제를 회피할 수 있는 기능을 제공합니다. 다이아몬드 문제(Diamond Problem) 다중 상속 시, 어느 클래스의 메소드를 상속받아야 하는지 모호한 문제로, 둘 이상의 부모에 같은 메소드가 정의되어 있을 경우, 어느 것을 상속받을지 모호하게 됩니다. 인터페이스는 기능에 대한 선언만 해두면 되기 때문에, 다중 상속을 하더라도 충돌할 여지..
프로세스 스케줄링 프로세스 스케줄링 스케줄링이란 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 뜻하며, 대기 시간은 최소화하고 최대한 공평하게 처리하는 것을 목적으로 합니다. 메모리에 여러 개의 프로세스를 올려놓고(다중 프로그래밍), CPU의 가동시간을 적절히 나누어(시분할) 각각의 프로세스에게 분배하여 실행되도록 합니다. 프로세스 스케줄링이란 CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 일입니다. 처리율과 CPU 이용률을 증가시키고 오버헤드/응답시간/반환시간/대기시간을 최소화시키기 위한 기법입니다. 즉, CPU가 쉬지 않고 계속 열심히 일할 수 있도록 효율적인 계획을 잡아주는 것입니다. 스케줄링에서는 아래와 같이 장기, 중기, 단기 단위가 있습니다. 장기 ..
문맥교환(Context-Switching) 문맥교환 (Context Switching) PCB (Process Control Block) 운영체제가 시스템 내의 프로세스들을 관리하기 위해 프로세스마다 유지하는 정보들을 담는 커널 내 자료구조. 커널 주소 공간의 data 영역에 존재합니다. PCB에 저장되는 내용들 Process 상태 CPU를 할당해도 되는지 여부를 결정하기 위해 필요합니다. PC 값 다음에 수행할 명령어의 위치를 가리킵니다. CPU Register CPU 연산을 위해 현 시점에 레지스터에 어떤 값을 저장하고 있는지를 나타냅니다. CPU 스케줄링 정보 메모리 관리 정보 자원 사용 정보 입출력 상태 정보 등등 Process마다 Context가 필요한 이유 문맥교환이 일어나기 때문입니다. 문맥교환 중에 CPU를 선점하고 있던 프로세스는..
동기와 비동기 동기와 비동기 동기와 비동기는 데이터를 받는 방식을 말합니다. 동기와 비동기로 작성한 코드의 가장 큰 차이 중 하나는 런타임 시에 발생하는 지연시간(latency)입니다. 동기 (Synchronous : 동시에 일어나는) 동기는 말 그대로 동시에 일어난다는 뜻입니다. 요청과 그 결과가 동시에 일어난다는 약속으로, 바로 요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 합니다. A노드와 B노드 사이의 작업 처리 단위(Transaction)를 동시에 맞춥니다. 동기식 처리 모델(Synchronous Processing Model)은 직렬적으로 태스크(Task)를 수행합니다. 즉, 태스크는 순차적으로 실행되며 어떤 작업이 수행 중이면 다음 작업은 대기하게 됩니다. 예를 들어, 서버에서 데이터..
교착상태와 기아상태 교착상태와 기아상태 교착상태(DeadLock)란? 다중 프로그래밍 시스템에서는 프로세스가 결코 일어나지 않을 사건을 기다리는 상태가 되면 교착상태에 빠졌다고 말합니다. 두 개 이상의 프로세스들이 사용할 자원을 할당받기 위해 기다리고 있어서 결과적으로 아무것도 완료되지 못하는 상태를 말합니다. 교착상태는 하나 이상의 작업에 영향을 주기 때문에 무한 대기나 기아상태보다 더 심한 문제를 일으킵니다. 교착상태는 시스템 자원에 요구가 뒤엉킨 상태로, 두 프로세스가 사용하는 자원(비공유)을 서로 기다리고 있을 때 발생합니다. 따라서 둘 이상의 작업이 중단되고 프로세스들은 서로 사용할 자원을 기다리고만 있게 됩니다. 그림에서 P1 프로세스는 P2 프로세스가 사용 중인 자원 R1을 할당받기 위해 기다리고 있고, P2 ..
Process와 Thread Program Program이란 파일이 저장 장치에 저장되어 있지만, 메모리에는 올라가 있지 않은 정적인 상태를 말합니다. 이 말을 쉽게 설명해보면, 메모리에 올라가 있지 않은 : 아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻입니다. 모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 주어야 실행될 수 있습니다. 정적인 상태 : '정적'이라는 단어 그대로, 움직이지 않는 상태라는 뜻입니다. 한 마디로 아직 실행되지 않고 가만히 있다는 뜻입니다. 이 프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적인 상태라고 하며 이 상태의 프로그램을 프로세스라고 합니다. 따라서 대부분의 경우 프로세스에 대해 정의할 때 '실행..
TCP와 UDP TCP와 UDP TCP와 UDP는 OSI 표준 모델과 TCP/IP 모델의 전송 계층에서 사용되는 프로토콜입니다. 전송 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하고 IP에 의해 전달되는 패킷의 오류를 검사하며 재전송 요구 제어 등을 담당하는 계층입니다. 쉽게 말해 데이터의 전달을 담당한다고 생각하면 됩니다. TCP와 UDP는 포트 번호를 이용하여 주소릴 지정하는 것과 데이터 오류 검사를 위한 CheckSum이 존재한다는 두 가지 공통점을 가지고 있지만 정확성(TCP)을 추구할지 신속성(UDP)을 추구할지 구분하여 나뉩니다. 데이터를 중요하게 생각하여 확실히 주고받고 싶을 때는 TCP(Transmission Control Protocol)를 사용합니다. TCP는 통신할 컴퓨터끼리 '보냈습..
TCP/IP 4 Layer TCP/IP 4계층 TCP/IP 모형은 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고 받는 데에 쓰이는 통신 규약(프로토콜)의 모음으로 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행함으로 서로 간의 간섭을 최소화하여 사용의 편리성을 높입니다. 국제 표준화 기구(ISO)에서는 상호 이질적인 네트워크 간의 연결에서 호환성의 결여를 막기 위해 OSI 7계층 모델을 개발했습니다. 실제 사용되는 TCP/IP는 OSI 참조 모델을 기반으로 상업적이고 실무적으로 이용될 수 있도록 단순화된 모형입니다. 네트워크 전송 시 데이터 표준을 정리한 것이 OSI 7계층, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층입니다. OSI 7계층을 4-5계층으로 분류하여 적용할 수 있습니다. TCP/IP 4계층 모형..
OSI 7 Layer OSI 7계층 OSI(Open Systems Interconnection) 모델은 기본 내부 구조 및 기술에 관계없이, 통신 또는 컴퓨팅 시스템의 통신 기능을 특성화하고 표준화하는 개념적 모델입니다. 그 목표는 표준 프로토콜과 다양한 통신 시스템의 상호 운영성입니다. OSI 모델은 네트워크에서 데이터가 전송되는 방식의 흐름을 모델링하거나 추적하기 위해 IT 전문가가 사용하는 도구입니다. 따라서 OSI 모델은 기본적으로 네트워크 시스템이 서로 데이터를 통신하는 방식에 대한 논리적 모델/표현입니다. OSI 계층의 목적 OSI 계층 모델의 목적은 공급 업체와 개발자가 만든 디지털 통신 제품 및 소프트웨어 프로그램이 상호 운용되도록 안내하고, 통신 장비 간의 명확한 비교를 용이하게 하는 것입니다. 또한, 문제 ..