[CS] 운영체제와 컴퓨터
·
CS
운영체제의 역할과 구조운영체제의 역할운영체제의 역할은 크게 네 가지가 있음.1. CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리함.2. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리함.3. 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리함.4. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리함. 운영체제의 구조유저 프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조임. 그리고 여기서 GUI, 시스템콜, 커널, 드라이버 부분이 바로 운영체제를 지칭함. 참고로 G..
[CS] HTTP
·
CS
HTTP/1.0HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되었음. 이는 RTT 증가를 불러오게 됨.서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있었음. RTT패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간 RTT의 증가를 해결하기 위한 방법매번 연결할 때마다 RTT가 증가하니 서버에 부담이 많이 가고 사용자 응답 시간이 길어졌음. 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 했음. 이미지 스플리팅많은 이미지를 다운로드받게 되면 과부하가 걸리기 때문에 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, 이를 기반으로 bac..
[CS] IP 주소
·
CS
ARP컴퓨터와 컴퓨터 간의 통신은 흔히들 IP 주소 기반으로 통신한다고 알고 있지만 정확히 말하자면 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신함. APR(Address Resolution Protocol)란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜임.ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환함. 이와 반대로 RARP를 통해 실제 주소인 MAC 주소를 가상 주소인 IP 주소로 변환하기도 함. 위의 그림처럼 장치 A가 ARP Request 브로드캐스트를 보내서 IP 주소에 해당하는 MAC 주소를 찾음. 그러고 나서 해당 주소에 맞는 장치 B가 ARP Reply 유니캐스트를 통해 MAC 주소를 반환하는 ..
[CS] 네트워크 기기
·
CS
네트워크는 여러 개의 네트워크 기기를 기반으로 구축됨. 네트워크 기기의 처리 범위네트워크 기기는 계층별로 처리 범위를 나눌 수 있음. 물리 계층을 처리할 수 있는 기기와 데이터 링크 계층을 처리할 수 있는 기기 등이 있음. 그리고 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가함. 애플리케이션 계층 : L7 스위치인터넷 계층 : 라우터, L3 스위치데이터 링크 계층 : L2 스위치, 브리지물리 계층 : NIC, 리피터, AP 애플리케이션 계층을 처리하는 기기애플리케이션 계층을 처리하는 기기로는 L7 스위치가 있음. L7 스위치스위치는 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비임. L7 스위치는 로..
[CS] TCP/IP 4계층 모델
·
CS
인터넷 프로토콜 스위트(internet protocol suite)는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 포토콜의 집합이며, 이를 TCP/IP 4계층 모델로 설명하거나 OSI 7계층 모델로 설명하기도 함. 계층 구조TCP/IP 계층은 네 개의 계층을 가지고 있으며 OSI 7계층과 많이 비교함. TCP/IP 계층과 달리 OSI 계층은 애플리케이션 계층을 세 개로 쪼개고 링크 계층을 데이터 링크 계층, 물리 계층으로 나눠서 표현하는 것이 다르며, 인터넷 계층을 네트워크 계층으로 부른다는 점이 다름. 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계되었음. 애플리케이션 계층애플리케이션(application) 계층은 FTP, HTTP, SSH, SMTP, DNS 등 ..
[CS] 네트워크의 기초
·
CS
네트워크네트워크는 컴퓨터 등의 장치들이 통신 기술을 이용하여 구축하는 연결망을 지칭하는 용어임.네트워크란 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미함.여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미함. 처리량과 지연 시간처리량처리량(throughput)은 링크 내에서 성공적으로 전다로딘 데이터의 양을 말하며 보통 얼만큼의 트래픽을 처리했는지를 나타냄.'많은 트래픽을 처리한다' = '많은 처리량을 가진다'단위로는 bps(bits per second)를 사용함. 초당 전송 또는 수신되는 비트 수.처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의..
[CS] 프로그래밍 패러다임
·
CS
프로그래밍 패러다임프로그래밍 패러다임(programming paradigm)은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론.선언형 프로그래밍선언형 프로그래밍(declarative programming)이란 '무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다." 라는 명제가 담겨 있는 패러다임 함수형 프로그래밍함수형 프로그래밍(functional programming)이란 선언현 패러다임의 일종. 순수 함수출력이 입력에만 의존하는 것을 의미함. 고차 함수함수가 함수를 값처럼 매개변수로 받아 로직을 생성할 수 있는 것. 일급 객체변수나 메서드에 함수들 할당할 수 있음함수 안에 함수를 매개변수로 담을 수 있음함수가 함수를 반환할 수 있음객체지향 프로그래..
[CS] 디자인 패턴
·
CS
싱글톤 패턴하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 장점하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어듦단점의존성이 높아짐. TDD(Test Dirven Development)를 할 때 걸림돌이 됨. 의존성 주입 - DI(Dependency Injection)모듈 간의 결합을 조금 더 느슨하게 만들 수 있음.이를 통해 메인모듈(상위모듈)은 하위모듈에 대한 의존성이 떨어지게 됨. -> 디커플링 된다 DI의 장점모듈들을 쉽게 교체할 수 있는 구조가 되어, 테스팅하기 쉽고 마이그레이션하기 수월함.구현할 때 추상화 레이어를 넣고 이를 기반으로 구현체를 넣어 주기 때문에 애플리케이션 의존성 방향이 일관되고, 애플리케이션을 쉽게..