UNIX서버 6주차

2022. 4. 20. 03:43학교수업

* : 정규식

- 0개 이상의 문자들의 반복

 

프로세스 : 실행중인 프로그램

- 프로그램 실행을 위해서는 프로그램 코드, 데이터, 스택, 힙, U-영역이 필요하다.

- 프로세스 이미지는 메모리 내 프로세스 레이아웃

- 실행 파일 자체는 프로세스가 아니다

 

프로세스 구조

- 코드 세그먼트 : 기계 명령어

- 데이터 세그먼트 : ex) int maxcount = 00 에서 99; long sum[1000];에서 sum[1000]

- 스택 : 지역 변수, 매개 변수, 반환주소, 반환 값

- 힙 : 동적 메모리 할당

 

변수 구분

- 정적 변수 : 전역 변수, static 변수

- 자동 변수 : 지역 변수, 매개 변수

- 동적 변수 : 힙 할당 변수

 

동적 메모리 할당

- 필요할 때 필요한 만큼 메모리를 할당 요청 -> 메모리를 효율적으로  사용

- malloc() : void *malloc(size_t size) 메모리 할당

- calloc() : void *callod(size_t n, size_t size); //n개 할당, 값을 모두 0으로 초기화

- realloc() : void * realloc(void *ptr, size_t newsize);

- free() : void free(void *ptr) 메모리 반환

 

연결 리스트 필요성

- 연결리스트는 입력의 크기를 미리 알지 못하는 경우 적합하다.

 

메모리 관리 함수 vs 문자열 처리 함수

strcpy() <-> memcpy()

strcmp() <-> memcmp()

차이점 

- 인자와 반환값이 다르다.

-> 문자열 처리 : 인자 반환값 대부분 char*

-> 메모리 관리 : 메모리 대상이므로 void* -> 임의의 자료형에 잘 동작한다.

- 연산의 대상을 인식하는 방법

-> 문자열 : 널 종료 문자에 의해 문자열 끝 인식

-> 메모리 : 대상의 길이를 매개변수에 지정하고 있다.

 

메모리 관리 함수

void *memset(void* s, int c, size_t n) : s에서 시작하여 n바이트만큼 c로 설정

int memcmp(const void* s1, const void *s2, size_t n) : 메모리 블록 내용 동일한지 비교 동일시 0

void *memchr(const void* s, int c, size_t n) : c문자 탐색

void *memmove(void *dst,const void *src, size_t n) : src에서 dst로 n 바이트 복사, 두 영역 겹치기 가능

void *memcpy(void *dst,const void *src, size_t n) : src에서 dst로 n 바이트 복사, 두 영역 겹치지 않음

 

시스템 부팅은 fork/exec 시스템 호출을 통해 이루어진다.

 

sched : 0

- 커널 내부에서 만들어진 프로세스로 paging, 프로세스 스케줄링 수행

init(초기화 프로세스) : 1

getty 프로세스 : 350

login 프로세스 : 350

shell 프로세스 : 350

 

데몬 서비스

- 시스템에서 활동 중인 후면처리 프로세스의 일종

- 서버 데몬 유형

1. standalone 형

- 메모리 상에 상주하며 서비스 제공 ex) httpd, sshd,

2. inetd 형

- 수퍼 데몬  : 자신이 직접 서비스 X -> 서비스 요청시 자신에게 종속된 하위 데몬을 구동하여 서비스 담당 연결

ex) telnet/ftp

inetd 데몬은 standalone형으로 항상 메모리에 상주

'학교수업' 카테고리의 다른 글

게임공학개론 7주차  (0) 2022.04.21
인공지능개론 7주차  (0) 2022.04.20
UNIX 서버 5주차  (0) 2022.04.19
UNIX서버 4주차  (0) 2022.04.19
윈도우즈 프로그래밍 5주차  (0) 2022.04.16