Server & Client
Server/Client
server – 클라이언트의 요청 대기 -> 정보 및 서비스 제공
client – 서버에서 제공되는 정보 및 서비스를 이용하는 호스트
서버에 정보 및 서비스의 제공을 요청하고 응답을 기다림
socket – 네트워크로 입출력을 하기위해 사용자에게 필요한 수단을 제공하는 응용 프로토콜 인터페이스
입출력을 위한 요소
프로토콜, 소스,목적지의 IP, PORT
-Socket = 소켓 생성
-Bind = 소켓에 주소 정보 할당
네트워크 바이트 순서
Big-Endian 상위 바이트가 먼저, 네트워크 바이트 순서
Little-Endian 하위 바이트가 먼저, 호스트 바이트 순서
inet_addr = Dotted-Decimal Notation -> Big-Endian 32bit
listen = 서버가 클라이언트의 연결 요청 대기
connect = 클라이언트가 서버에 연결 요청
accept = 서버가 클라이언트에게 연결 요청 수락
recv(), send() =receive, send
close = 소켓 연결 종료
select
Select = 소켓의 I/O변화를 감지
Thread
프로세스의 문제점 : context switch overhead, 프로세스 생성 시간이 김, 동기화 오버헤드
프로세스는 여러 개의 쓰레드를 가질 수 있다.
함수호출 vs 멀티쓰레딩
비슷한 점 = 다른 함수나 쓰레드에서 선언된 변수를 접근할 수 없다.
전역 데이터와 힙영역은 모든 함수와 쓰레드가 공유
쓰레드는 쓰레드는 해당하는 스택이 하나씩 있고, 동시에 함수의 수행이 가능하다.
코드, 데이터, 파일은 공유하지만 레지스터와 스택은 개별
프로세스는 두 개의 컴포넌트로 나뉘어지는 복잡한 개체
쓰레드의 집합과 자원의 집합
수행 유닛은 쓰레드이며 수행환경을 제공해주고 쓰레드 id가 있다
pthread_self, create, exit, join, cancel(다른 쓰레드 제거), cleanup_push,pop 스택!
쓰레드 동기화
임계영역(critical section) = 둘 이상의 쓰레드가 공유하는 메모리 공간에 접근하는 코드영역
동기화 = 공유된 메모리에 둘 이상의 쓰레드가 동시 접근 막음, 실행순서 컨트롤
자체 동기화(pthread)
-mutex, lock and unlock
-mutex = 임계영역에 들어갈 때 잠그고 나올 때 풀고나옴(init, destroy, lock, unlock)
semaphore
하나 이상의 플레스가 동기화 또는 배제를 위한 목적으로 획득하거나 놓아주는 커널
(프로세스, 쓰레디 모두 적용)
wait, signal 함수로 접근 wait으로 세마포어를 획득하면 토큰이 감소, signal로 세마포어를 놓아주면 토큰의 수가 증가
세마포어가 생성될 때, 토큰도 생성됨
binary semaphore = 하나의 공유 자원에 직렬로 접근
세마포어 생성 -> 세마포어 연산 -> 세마포어 제어 -> 공유 자원 사용
semget = 세마포어 생성, 세마포어 설정을 확인
semop = 세마포어 조작, 세마포어 아디를 갖는 세마포어에 대해 연산을 수행
semctl = 세마포어 원소들은 사용되기 전에 semctl로 초기화
'SW > LINUX' 카테고리의 다른 글
IPC (Inter Process Communication) (0) | 2017.09.05 |
---|---|
NETWORK (네트워크) (0) | 2017.09.05 |
GDB (0) | 2017.09.05 |
버전관리, SVN (0) | 2017.09.05 |
GCC compiler (내부 매크로, Makefile) (0) | 2017.09.05 |