운영체제
우리가 컴퓨터를 사용할 때 하드웨어를 관리하고 응용 프로그램과 하드웨어 사이의 인터페이스 역할을 하여 시스템 동작을 제어하는 소프트웨어가 운영체제입니다. 운영체제는 시스템의 자원과 동작을 관리하여 프로그램에 대한 서비스를 지원하는 역할을 해줍니다.
- 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있게 인터페이스를 제공해주는 시스템 소프트웨어
1. 프로세스(process): 프로세스란 실행 중에 있는 프로그램을 의미합니다. 즉 운영체제로부터 메모리 공간을 할당받아 실행 중인 것입니다.
2. 프로그램(program): 파일 단위로 저장 장치에 저장되어 있고 실행되지 않은 코드 상태입니다.
3. 스레드(thread): 프로세스를 구성하는 독립적인 실행 단위입니다.
스레드는 프로세스에서 실행 제어만 분리한 부분인데 같은 프로세스 내 다른 스레드와 메모리 영역을 공유하며 각 스레드는 스택 영역을 통해 독립적인 실행 흐름을 가집니다. 문맥 교환으로 인한 자원 낭비를 최소화합니다.
- 프로세스는 컴퓨터 자원을 분리해서 쓰지만 스레드는 공유하여 속도와 효율적인 면에서는 스레드가 더 좋습니다.
- 하지만 프로세스 안에서 공유되는 변수에 두 스레드가 동시에 접근하게 되면 오류가 나기 때문에 주의해야합니다.
멀티스레드는 한 프로세스 안에서 여러 개의 스레드를 동시에 수행하는 것을 말합니다. 우리가 유튜브 영상을 다운받으면서 재생할 수 있는 이유가 바로 멀티스레드를 사용하기 때문입니다.
Network
네트워크란 두 개 이상의 노드가 서로 데이터를 공유할 수 있게 하는 통신 환경입니다. 대표적인 예로 인터넷이라는 전 세계를 연결하여 데이터를 공유할 수 있는 네트워크 통신망이 존재합니다.
- LAN(Local Area Network): 근거리 네트워크로 넓은 범위에서 사용할 수는 없지만 소규모 공간 안에 고속 통신회선이 가능합니다. WAN보다 빠른 통신속도를 가지면 보통 Peer - to - Peer 형태입니다.
- WAN(Wide Area Network): 광대역 네트워크 망으로 LAN과 LAN을 다시 하나로 묶은 것으로 소규모 LAN들을 묶어 서로 다른 지역에서도 통신할 수 있게 만든 것입니다.
연결 형태에 따라서
- Star형: 노드 추가가 쉽고, 개별 링크 장애 시에도 네트워크 영향이 적어 고속 네트워크에 적합하지만 중앙 노드 장애 시 전체 네트워크도 멈추고 노드 증가에 따라 네트워크 복잡도가 증가한다는 점이 있습니다.
- Mesh형: 완벽하게 이중화되어있어서 장애에 강하고 많은 양의 데이터 처리에도 문제가 없지만 구축 비용이 큽니다.
네트워크 TCP/UDP
네트워크 - HTTP
HTTP는 Hyper Text Transfer Protocol의 약자로 클라이언트의 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고, 곧바로 연결을 종료하는 방식입니다.
단방향 통신 / 비실시간 / 요청을 보낸 후 서버의 응답을 기다리는 애플리케이션 개발에 주로 사용됩니다.
socket 통신