문제> ArrayList를 이용하여 학생별 프로그래밍 언어 자격증 취득 정보를 관리하고, 자바 자격증을 보유한 학생 이름을 출력하시오. 조건> - 학생 이름 및 자격증 취득 정보를 위한 Student 클래스 생성 - 학생 1인당 보유 자격증은 1개로 제한 - 모든 클래스는 하나의 파일에 정의 이름 자격증(프로그래밍 언어) 유재석 파이썬 박명수 자바 김종국 자바 조세호 C 서장훈 파이썬 import java.util.ArrayList; import java.util.List; class Student { String name; String certification; public Student(String name, String certification) { this.name = name; this.cert..
1. 가상 메모리의 개요 - 가상 메모리는 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술이다. 이로 인해 프로세스는 운영체제의 위치와 물리 메모리의 크기에 구애받지 않고 마음대로 메모리를 사용할 수 있다. 모든 프로세스는 위치에 상관없이 0부터 시작하는 연속된 메모리 공간을 갖는다. - 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. 물리 메모리가 꽉 차면 일부 프로세스를 스왑 영역으로 보내고, 몇 개의 프로세스가 작업을 마치면 스왑 영역의 프로세스를 메모리로 가져온다. - 가상 메모리의 크기 = 물리 메모리(실제 메모리) + 스왑 영역 -> 이 과정을 동적 주소 변환이라고 하는데 이후 프로세스는 아무 제약 없이 사용자 데이터를 물리 메모리에 배치할 수..
1. 메모리 관리의 개요 - 폰노이만 구조에서 메모리는 유일한 작업 공간이며 모든 프로그램은 메모리에 올라와야 실행할 수 있다. 따라서 메모리의 효율적인 공간 관리가 필수적이다. 이를 위해 CPU 안에 캐시를 만들어 작업하고, 보조저장장치를 활용하기도 한다. - 복잡한 메모리 관리는 메모리 관리 시스템이 담당한다. 프로세스와 메모리 관리자는 메모리를 두고 충돌하는데 이를 메모리 관리의 이중성이라고 한다. - 컴파일러는 소스코드를 기계어로 번역한 후 한꺼번에 실행하고, 인터프리터는 소스코드를 한 행씩 번영하여 실행한다. 컴파일러 방식은 오류 발견과 소스코드 최적화에 이점이 있다. 참고로, 라이브러리는 자주 사용하는 함수를 시스템 내에 미리 만들어둔 것이고, 실행할 때 삽입되는 함수를 가진 동적 라이브러리가..
✨ TCP와 UDP 의 차이? TCP와 UDP는 모두 인터넷 프로토콜(IP)에서 사용되는 전송 제어 프로토콜이다. 하지만 TCP와 UDP는 목적과 특성이 서로 다르다. TCP(Transmission Control Protocol)는 신뢰성 있는 데이터 전송을 보장하는 연결형 프로토콜이다. TCP는 전송할 데이터를 패킷으로 분할하여 전송하며, 각각의 패킷은 목적지에 도달할 때까지 재전송된다. 또한 TCP는 데이터 전송을 보장하기 위해 순서 제어, 오류 제어, 혼잡 제어 등의 기능을 제공한다. 이러한 기능으로 인해 TCP는 안정적인 데이터 전송을 보장하지만, 전송 속도가 느리고 대역폭을 많이 차지한다. 반면에 UDP(User Datagram Protocol)는 비연결형 프로토콜로서, 데이터 전송의 신뢰성보다..
Runtime Data Areas는 Process로서의 JVM 프로그램을 수행하기 위해 OS로 부터 할당 받는 메모리 영역으로 각각의 목적에 따라 5개의 영역으로 나뉜다. JVM 메모리구조 1. 메소드영역(Method Area) - 클래스 파일의 바이트코드, 상수, 메소드와 필드의 이름, 타입, 접근 제어자 정보 등을 보관하는 곳이다. - 모든 스레드가 공유하는 영역이다. - 클래스 로딩 시점에 초기화되며, JVM이 종료될 때까지 유지된다. 2. 힙 영역(Heap) - 객체와 배열 등을 생성하는 곳. - 프로그램 실행 중 동적으로 메모리를 할당하고 해제한다. - Garbage Collector(GC)에 의해 관리된다. - 모든 스레드가 공유하는 영역이다. 3. 스 영역(Stack) - 메소드 호출과 관련..
1. 스케줄링 개요 1) CPU 스케줄링 - 스케줄러: 여러 프로세스 상황을 고려해 CPU와 시스템 자원을 어떻게 배정할지 결정 - 규모에 따라 고수준, 중간 수준, 저수준 스케줄링으로 구분된다. ✨ 스케줄링 - 고수준: 시스템 내의 전체 작업 수를 조절한다. 이에 따라 시스템 내에서 동시에 실행 가능한 프로세스의 총개수가 정해진다. - 중간 수준: 시스템의 부하를 조절한다. 이미 활성화된 프로세스 중 일부를 보류 상태로 보내고, 여유가 생기면 다시 활성화된다. - 저수준: 어떤 프로세스에 CPU를 할당할지, 어떤 프로세스를 대기 상태로 보낼지 등을 결정한다. 2) 스케줄링의 목적 - 모든 프로세스가 공평하게 작업하도록 하는 것 - 공평성, 효율성, 안정성, 확장성, 반응 시간 보장, 무한 연기 방지 2..