728x90
반응형
🔥 CS 개념 복습
자료구조
Call by value, Call by reference 차이점? |
Call by Value - 함수에 값을 전달할 때 값을 복사하여 전달하는 방식 - 원본 데이터를 보호할 수 있는 장점 - 큰 데이터를 복사하는 경우 성능 저하 - 깊은 복사(deep copy)를 통해 불변성을 유지 -> 객체의 중첩된 속성까지 모두 복사해 새로운 객체 생성 - 불변성(Immutable)을 지향 -> 완벽한 불변성은 아님 - 객체의 경우: 자바스크립트와 같은 언어에서는 객체를 Call By Value로 전달하지만, 실제로는 객체의 참조 값(메모리 주소)이 복사됩니다. 따라서 함수 내부에서 객체의 속성을 변경하면 원본 객체에도 영향을 미칩니다. - 원시 값의 경우: 숫자, 문자열, 불리언 등의 원시 값은 Call By Value로 전달되어 함수 내부에서 변경해도 원본 값은 변하지 않습니다. Call by Reference - 함수에 값을 전달할 때 메모리 주소를 전달하는 방식 - 큰 데이터를 효율적으로 처리할 수 있는 장점 - 원본 데이터가 변경될 위험이 있음 |
OS
Race Condition 이란? | Race Condition(경쟁 상태) - 두 개 이상의 프로세스가 공유 자원에 동시 접근할 때 실행 순서에 따라 결과 값이 달라질 수 있는 현상 |
Race Condition 해결책? | 세마포어(Semaphore) - 멀티 프로그래밍에서 공유된 자원에 대한 접근을 제한하는 방법 - 사용하고 있는 쓰레드/프로세스의 수를 공통으로 관리하는 하나의 값을 이용해 상호배제 달성(카운터) 뮤텍스(Mutex) - 동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용되는 알고리즘 - 한 프로세스에 의해 소유될 수 있는 Key를 기반으로한 상호배제 기법 - Key를 가진 쓰레드/프로세스만이 공유자원에 접근 가능 뮤텍스와 세마포어의 차이점 - 동기화 대상의 개수 : Mutex(1개) / Semaphore(1개 이상) ->세마포어는 뮤텍스가 될 수 있음(Binary Semaphore) - Mutex는 소유하고 있는 쓰레드만이 해제 가능 ->세마포어는 세마포어 소유하지 않는 쓰레드가 세마포어 해제 가능 [출처] https://worthpreading.tistory.com/90 |
데드락(Deadlock) 이란? | 데드락(Deadlock) - 둘 이상의 프로세스들이 각각 자원을 점유한 상태(Lock을 소유한 상태)에서, 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 서로의 작업이 끝나기만을 기다리는 상황 - 하나의 프로세스가 락을 소유한 채로 해제하지 않거나, 둘 이상의 프로세스가 락을 소유하기 위해 경쟁할 때 조건 - 상호배제(Mutual exclusion) : 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 - 비선점(No preemption) : 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 - 보유 & 대기(Hold and Wait) : 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유자원을 놓지 않고 지님 - 순환대기(Circular wait) : 자원을 기다리는 프로세스 간의 사이클이 형성 |
네트워크 & HTTP
TCP, UDP 란? | TCP 프로토콜 - 연결 기반으로 데이터를 전송 - 데이터가 완전히 도착하도록 보장(패킷의 순서가 변경/손실되면 재전송) - 송신자와 수신자 사이에 연결을 설정(3-handshake 방식 /) - 데이터의 연결설정과 재전송으로 인해 속도가 느림 - 파일 전송, 이메일 전송 등 UDP 프로토콜 - 비연결 방식으로 두 당사자 간에 사전 연결을 설정하지 않음 - 데이터가 손실될 가능성이 있음(패킷이 누락되도 전체 전송이 중단되지 않음) - 발신자 측에서 손실 여부를 확인 불가 - 데이터의 안정성이 떨어지지만 더 빠름 - 스트리밍, 게임 등 [출처] https://nordvpn.com/ko/blog/tcp-udp-comparison/ |
728x90
반응형
'크래프톤 정글 - TIL' 카테고리의 다른 글
크래프톤 정글 5기 TIL - 나만의 무기 만들기 2(카카오 Oauth, Canvas) (0) | 2024.07.02 |
---|---|
크래프톤 정글 5기 TIL - 나만의 무기 만들기 1(Canvas API) (0) | 2024.07.02 |
크래프톤 정글 5기 TIL - Day 96(CS 면접 복습) (0) | 2024.06.25 |
크래프톤 정글 5기 TIL - Day 84 ~ 95(실력 다지기) (0) | 2024.06.14 |
크래프톤 정글 5기 TIL - Day 71 ~83(Virtual Memory) (0) | 2024.06.03 |