computer science(23)
-
Race Condition::운영체제
Race Condition이란? 둘 이상의 입력 또는 조작의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있는 상태입니다. 입력 변화의 타이밍이나 순서가 예상과 다르게 작동하면 정상적인 결과가 나오지 않게 될 위험(경쟁 위험)이 있습니다. ex) 두 개 이상의 스레드가 동기화 메커니즘 없이 공유된 자원에 접근하려는 상황 하나의 자원을 놓고 서로 사용하려 경쟁하는 상황
2020.07.03 -
RAM, ROM, Flash 메모리::하드웨어
1. ROM(Read Only Memory) 전원이 공급되지 않아도 기록된 데이터를 보존하는 비휘발성(Non-volatile) 메모리입니다. 한 번 기록된 정보를 읽을 수만 있고, 수정할 수는 없는 고정 기억 장치입니다. 다시 쓰고 지울 수 있는 방식에 따라 MASK ROM, PROM, EPROM 등으로 구분됩니다. 종류 설명 MASK ROM - 가장 기본적인 ROM - 제조 과정에서 미리 내용을 기록해 놓은 메모리 - 사용자가 내용 수정 불가 PROM (Programmable ROM) - 사용자가 한 번만 기록 가능 EPROM (Erasable PROM) UV EPROM - 강한 자외선(UV)으로 데이터 삭제 EEPROM (Electrically EPROM) - 전기적인 기능으로 데이터 삭제 초기의 M..
2020.07.03 -
String, StringBuffer, StringBuilder::자바
자바에서 문자열을 다루는 대표적인 클래스로 String, StringBuffer, StringBuilder가 있습니다. 연산 횟수가 많아지거나 멀티스레드, Race Condition 등의 상황이 자주 발생한다면 각 클래스의 특징을 이해하고, 상황에 맞는 적절한 클래스를 사용해야 합니다(Race Condition이란? -> https://junboom.tistory.com/29). 1. String 불변의 속성을 가집니다. String str = "Hello"; str += " world"; 위 상황에서 str 변수가 "Hello"에서 "Hello world"로 변환된다고 생각할 수도 있지만, 실제로는 "Hello" 객체에서 "Hello world"라는 새로운 객체를 참조하게 되어 "Hello" 객체는 G..
2020.07.03 -
Vector와 ArrayList 비교::자바
자바에서 크기를 동적으로 할당할 수 있는 배열은 Vector와 ArrayList가 있습니다. 1. Vector - Collections 프레임워크가 포함되어 있지 않던 초기 자바 버전부터 제공한 레거시 클래스입니다. - 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다. - 배열과 마찬가지로 정수 인덱스를 이용해 배열에 액세스 할 수 있습니다. - 스레드 안전(Thread Safe)한 배열로 한 번에 하나의 스레드만 벡터의 메소드를 호출할 수 있습니다. 2. ArrayList - Collections 프레임워크의 일부이며 java.util 패키지 내에 존재합니다. - 필요에 따라 크기를 동적으로 조절할 수 있는 동적 배열을 구현할 수 있습니다. - 자바 표준 배열보다 약간 느릴..
2020.07.03 -
슬라이딩 윈도우 프로토콜::운영체제
슬라이딩 윈도우 프로토콜이란? 두 호스트 간 데이터 전송을 위한 일반적인 통신 프로토콜로 오류 제어와 흐름 제어를 지원하는 방식입니다. - 송신 호스트는 정보 프레임(전송 데이터, 오류 검출 코드 등)을 순서 번호에 따라 순차적으로 전송합니다. - 정보 프레임을 수신한 수신 호스트가 응답하는 순서 번호는 정상적으로 수신한 번호가 아닌 다음 수신하기를 기대하는 회신 번호를 사용합니다. - 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼인 송신 윈도우를 유지해야 합니다. 송신 호스트가 관리하는 송신 윈도우는 전송되었지만, 긍정 응답(ACK)이 회신되지 않은 프레임을 보관합니다. - 수신 호스트는 수신한 정보 프레임을 보관하기 위한 내부 버퍼인 수신 윈도우를 유지해야 합니다. 수신 호스트가 관리하는 수신..
2020.06.30 -
프로세스(Process)와 스레드(Thread)::운영체제
1. 프로세스(Process) 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 의미합니다. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스로 독립적인 개체입니다. 운영체제로부터 시스템 자원을 할당받는 작업의 단위입니다. 할당받는 시스템 자원 1) CPU 시간 2) 운영되기 위해 필요한 주소 공간 3) Code, Data, Stack, Heap 구조로 되어 있는 독립된 메모리 영역 특징 - 각각 독립된 메모리 영역을 할당받습니다. - 기본적으로 프로세스 당 최소 1개의 스레드(메인 스레드)를 가지고 있습니다. - 각 프로세스는 별도의 주소 공간에서 실행되며 한 프로세스는 다른 프로세스의 메모리 영역(변수, 자료구조 등)에 접근할 수 없습니다. - 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로..
2020.06.30