컴퓨터과학
-
트래픽과 대역폭이 계산방법컴퓨터과학/네트워크 2024. 10. 10. 13:19
트래픽과 대역폭을 계산하는 것은 네트워크를 설계하거나 용량을 계획할 때 매우 중요한 작업입니다. 아래에서 네트워크 트래픽 및 대역폭을 계산하는 방법을 설명하겠습니다.1. 트래픽 계산 방법트래픽은 주로 네트워크를 통해 전송되는 데이터의 양을 의미하며, 이를 측정하려면 몇 가지 주요 개념을 이해해야 합니다.트래픽 계산의 기본 요소:데이터 크기 (Data Size): 전송되는 데이터의 크기, 일반적으로 바이트 단위로 측정 (MB, GB 등).사용자 수 (Number of Users): 네트워크를 사용하는 총 사용자 수.요청 빈도 (Request Frequency): 각 사용자가 얼마나 자주 네트워크를 통해 요청을 하는지.응답 크기 (Response Size): 각 요청에 대해 네트워크에서 반환되는 데이터의 크..
-
웹 브라우저를 통해 도메인 주소를 입력하는 경우, 실제로는 IP 주소와 MAC 주소를 모두 얻는 과정컴퓨터과학/네트워크 2024. 7. 23. 10:02
Contents --> 전체 과정 요약DNS 조회: 도메인 주소를 IP 주소로 변환ARP 조회: IP 주소를 MAC 주소로 변환 (로컬 네트워크 내)데이터 전송: IP 및 MAC 주소를 이용해 데이터를 전송 1. DNS 조회도메인 주소 (예: www.example.com)를 입력하면, 먼저 해당 도메인에 대한 IP 주소를 알아내야 합니다.DNS 조회 과정호스트 파일 확인: 클라이언트는 먼저 로컬 호스트 파일을 확인하여 도메인에 대한 IP 주소가 지정되어 있는지 확인합니다.DNS 캐시 확인: 운영체제의 DNS 캐시에 도메인에 대한 IP 주소가 저장되어 있는지 확인합니다.DNS 서버 질의: 캐시에 없으면 설정된 DNS 서버에 질의합니다.질의 과정:클라이언트의 DNS 리졸버가 DNS 서버에 www.exam..
-
스핀락,뮤텍스,세마포에 대해 각각 정의 및 차이 with 예제 코드 java컴퓨터과학 2024. 5. 27. 11:04
Contents --> 1. 스핀락(Spinlock)정의스핀락은 락을 획득하기 위해 루프를 돌며(lock을 획득할 때까지) 락의 상태를 계속 확인하는 방식의 동기화 메커니즘입니다. CPU 사이클을 소모하면서도, 락을 빠르게 획득할 수 있을 때 유리합니다. 특히, 락이 짧은 시간 동안 점유될 때 유리합니다.특징바쁜 대기(busy-waiting)를 사용하여 CPU 사이클을 소모합니다.멀티코어 시스템에서 락을 빠르게 획득할 수 있을 때 유리합니다.오래 대기할 경우 성능 저하가 발생할 수 있습니다.import java.util.concurrent.atomic.AtomicBoolean;class Spinlock { private final AtomicBoolean lock = new AtomicBoolea..
-
JSON 마셜링/언마셜링이란?컴퓨터과학 2024. 5. 23. 15:41
Contents --> JSON 마셜링/언마셜링이란?**JSON 마셜링(Marshalling)**과 **언마셜링(Unmarshalling)**은 데이터를 객체와 JSON 포맷 사이에서 변환하는 과정입니다.마셜링(Marshalling): 자바 객체를 JSON 문자열로 변환하는 과정.언마셜링(Unmarshalling): JSON 문자열을 자바 객체로 변환하는 과정.이러한 변환을 통해 자바 객체를 JSON 형식으로 외부 시스템에 전달하거나, JSON 형식의 데이터를 자바 객체로 변환하여 사용하게 됩니다. 주요 라이브러리자바에서 JSON 마셜링/언마셜링을 수행하는 대표적인 라이브러리로는 다음과 같은 것들이 있습니다:Jackson: 가장 널리 사용되는 JSON 처리 라이브러리 중 하나.Gson: Googl..
-
컨슈머 스레드(Consumer Thread)와 프로듀서 스레드(Producer Thread)컴퓨터과학 2024. 5. 23. 11:09
Contents --> 컨슈머 스레드(Consumer Thread)와 프로듀서 스레드(Producer Thread)란 멀티스레딩 환경에서 자주 사용되는 개념입니다. 이 개념들은 주로 생산자-소비자 문제(Producer-Consumer Problem)라는 고전적인 동시성 문제를 해결하는 데 사용됩니다.이유와 필요성자원 효율적인 사용:프로듀서 스레드와 컨슈머 스레드를 통해 작업을 분리함으로써 자원을 보다 효율적으로 사용할 수 있습니다. 예를 들어, 데이터 생성과 데이터 처리를 동시에 수행함으로써 시스템의 자원 활용도를 높일 수 있습니다.병렬 처리:멀티스레딩을 통해 여러 작업을 동시에 수행할 수 있습니다. 프로듀서 스레드가 데이터를 생성하는 동안 컨슈머 스레드는 데이터를 처리할 수 있어 전체 시스템의 처..
-
cpu바운드 프로그램 멀티쓰레딩에 최적의 스레드 개수 결정 방법 및 멀티쓰레딩 개발에 주의할점컴퓨터과학 2024. 5. 22. 14:01
Contents --> 기본 원칙최적의 스레드 수 = CPU 코어 수: 일반적으로, CPU 바운드 작업에서는 CPU 코어 수만큼의 스레드를 사용하는 것이 가장 효율적입니다. 이는 각 스레드가 동시에 실행될 수 있어 최대의 병렬성을 달성할 수 있기 때문입니다.과도한 스레드 사용 피하기: 스레드 수가 CPU 코어 수를 초과하면, 스레드 간의 문맥 전환 오버헤드가 발생하여 성능 저하를 초래할 수 있습니다.쓰레드 갯수 선택 이유병렬 처리 최적화: 각 스레드가 하나의 CPU 코어에서 실행될 수 있어 최대한의 병렬 처리가 가능해집니다.컨텍스트 스위칭 감소: 불필요한 스레드 간의 컨텍스트 스위칭을 최소화하여 CPU 오버헤드를 줄입니다.예제 코드아래 예제는 CPU 바운드 작업을 수행하는 파이썬 프로그램입니다. 이 ..
-
프로세스 컨텍스트 스위칭과 스레드 컨텍스트 스위칭 정의 및 차이 with 예제 python컴퓨터과학 2024. 5. 22. 11:58
Contents --> 프로세스 컨텍스트 스위칭 (Process Context Switching)정의프로세스 컨텍스트 스위칭은 CPU가 현재 실행 중인 프로세스의 상태를 저장하고 다른 프로세스의 상태를 복원하여 실행하는 것을 말합니다. 여기서 프로세스는 운영 체제에서 독립된 실행 환경을 가진 프로그램을 의미합니다.필요성다중 작업을 지원하기 위해 CPU는 여러 프로세스를 빠르게 전환하며 실행합니다.각 프로세스는 자신의 메모리 공간과 리소스를 가지고 있어야 하므로, 프로세스 스위칭 시 많은 정보를 저장하고 복원해야 합니다.컨텍스트 저장 내용CPU 레지스터 (프로그램 카운터, 스택 포인터 등)프로세스 상태 (레디, 실행 중, 대기 등)메모리 관리 정보 (페이지 테이블 등)기타 프로세스 관련 리소스예제프로세스..
-
단일프로세스,멀티프로그래밍,멀티태스킹,멀티프로세싱,컨텍스트 스위칭,스레드,멀티쓰레드란 무엇인가?컴퓨터과학 2024. 5. 17. 11:40
Contents --> 초기 컴퓨터와 프로세스초기의 컴퓨터는 한 번에 하나의 작업만 수행할 수 있었습니다. 이러한 시스템은 배치 처리(batch processing) 시스템으로, 하나의 작업이 끝나야 다음 작업을 시작할 수 있었습니다. 이때, 하나의 작업 단위는 프로세스(process)로, 독립적인 주소 공간과 자원을 가지는 프로그램 실행 단위를 의미합니다. 프로세스간에는 메모리가 공유되지 않는다. 단일프로세스cpu는 메모리에서 프로세스를 실행한다.단하나의 메모리에 있는 프로세스을 실행하는것을 단일프로세스라고한다. 단일프로세스의 단점은 cpu 1개의 하나의 프로세스을 실행시키므로 cpu낭비가 심하다. 멀티프로그래밍단일프로세스의 단점을 보완하기 위해 생긴 개념 cpu가 2개이상의 프로세스를 실행시키는 ..