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 |