이번 웨비나에서는 리눅스 시스템 프로그래밍의 메모리에 대해 알려드립니다.
메모리는 가장 기본적이면서도 핵심적인 부분으로 프로세스가 사용하는 자원입니다. 이러한 메모리 자원을 할당하고 사용 및 해제하는 방법에 대해서 알아봅시다. 많은 사용자들은 더 많은 메모리를 선호하는 경향이 있으나, 중요한 것은 메모리를 효율적으로 활용하는 방법입니다.
프로세스 주소 영역
리눅스는 현대의 운영체제와 마찬가지로 물리적인 메모리 자원을 가상화합니다. 프로세스는 직접벚긍로 물리적 메모리에 접근하지 않습니다. 대신 커널이 가각의 프로세스를 유일한 가상 주소영역으로 연결시켜 줍니다. 이러한 주소 영역은 선형적이며 0부터 시작하여 최대값까지 증가합니다.
메모리 영역 구분
커널은 페이지들을 블록으로 배치시켜서 접근 권한을 부여합니다. 이러함 블록들을 메모리 영역, 세그먼트 혹은 매핑이라 합니다. 텍스트 세그먼트는 프로세스의 프로그램 코드, 문자열, 상수 변수, 읽기 전용 데이터를 포함한다.
…
.
정재준 대표
- 4 Comments
- 김*환 (2018-12-13 오전 10:53:45)
- 소켓 프로그래밍도 가능 한가요?? 운영체제 올릴 수 있으면 쉽게 가능할 것 같은데.. 대안은 Wiznet과 같은 모듈을 사용하는 방법 밖에 없나요??
- 최*근 (2018-10-17 오전 10:04:16)
- 2. 지금은 멀티HW쓰레드와 멀티코어가 일반적으로 쓰이는데, 이럴 땐 여러 프로세스를 시분할이 아닌, 멀티코어가 각각 실행시켜 몇 개의 프로세스가 동시에 동작을 할텐데 그럴 땐 저 가상주소에서 프로세스들이 저 유저 영역을 나눠가지나요?
- 최*근 (2018-10-17 오전 10:00:31)
- 1. 28분에 main내부변수 size의 주소는 0x76CE_F568이고 mmap을 하여 p2를 통해 할당받은 주소는 0x76F3_5000인데, 변수 size는 Stack영역이라서 P2영역보다 주소값이 더 커야하는데 왜 더 작나요?
- 최*근 (2018-10-17 오전 9:58:21)
- 질문이 있는데