malloc 함수 자체가 시스템 콜이라는게 아니라... 시스템콜을 이용하는 함수라구.. 아래 줄.. write, open, printf 에도 부연 설명해놓았음.
익명(218.147)2020-03-04 02:35
시스템 콜이라는게 운영체제(커널)에 요청하는 함수임.
write, open, printf 이런게 다 시스템콜을 이용하는 함수임. 궁금하면 libc 소스코드 보면 됨
익명(117.111)2020-03-03 18:57
OS가 할당하지 - dc App
black7375(220.70)2020-03-03 19:04
CSAPP 보쉴?
츄럴(61.78)2020-03-03 20:21
일단 위에 틀린 애 있어서 정정하자면 malloc은 system call 아님. malloc은 내부적으로 mmap 또는 sbrk 호출함
익명(202.150)2020-03-03 23:09
mmu가 있는 아키텍처에 한정해 얘기하자면, os가 memory mapping (virtual to physical) (아마도 user process의 task_struct의 vma_struct로 표현될듯?) 안 만들어 주면 user-level process는 절대 메모리를 사용할 수 없음. malloc을 호출하게 되면 (1) 쓰고 회수된 메모리가 있으면 그걸 반환, (2) 남은 메모리가 없으면 os한테 memory mapping 만들어 달라고 요청하고 새로 mapping된 영역의 memory를 반환함 크게 둘 중 하나로 동작
익명(202.150)2020-03-03 23:16
스택과 힙은 너무 평소에는 너무 공기와 같이 생각해서 지금 좀 헷갈리는데, process 처음 init하는 단계에서 할당하는 과정이 있을 듯. 전에 본 영상인데 main()이 호출되기 전에 무슨 일이 일어나는 지 다루는 영상임. main이 호출되기 전에 불리는 함수에서 뭔가 일이 일어나고 있을 거로 예상됨. 아니면 strace 찍어봐도 되고.
할당이 뭔소리냐 프로세스가 OS 한테 요청을 하는거지 - return 0;
그러니까 프로그램이 실행되어서 메모리 할당을 요청하는데, 운영체제가 스택, 힙 영역을 따로 지정해서 할당해주는 구조냐 아니면 전체 메모리 공간을 프로그램한테 넘겨주고 메모리 공간 안에서 활용을 프로그램한테 맡기는 구조냐고
걍 OS 책 펴라 설명하기도 귀찮다 - return 0;
스택이니 힙이니 하는 개념이나 그 전에 가상메모리라는 개념이나 다 운영체제가 있어서 존재하는 개념이여
OS에 독립적으로 프로그램이 지맘대로 메모리 읽고 쓰면 씹창남 기본적으로 모든 리소스는 OS가 프로세스들에 배분하고 수거해감
c언어는 메모리를 보통 스택, 힙 영역으로 나누는데 c언어만 그런거임? 아니면 운영체제에서 모든 프로그램은 스택, 힙으로 메모리를 할당해라고 정해주는 거임?
언어랑 노상관인 개념임
사실 여러겹의 추상화가 쌓인 개념이라 한마디로 하긴 힘들고 운영체제 책 보는게 답이다
공룡책 딱 대 보고온다
공룡책 말고 OS: 3 Easy Pieces (혜성책) 봐라 번역서도 있다 - return 0;
기본적으로는 os가 할당해주고 수거하는게 맞는데 언어별로 런타임이 중간에 껴서 관리할수도 있음 스택 힙 이런건 os에서 관리해 주는게 맞다
malloc 이런 함수가 시스템 콜.
malloc 함수 자체가 시스템 콜이라는게 아니라... 시스템콜을 이용하는 함수라구.. 아래 줄.. write, open, printf 에도 부연 설명해놓았음.
시스템 콜이라는게 운영체제(커널)에 요청하는 함수임. write, open, printf 이런게 다 시스템콜을 이용하는 함수임. 궁금하면 libc 소스코드 보면 됨
OS가 할당하지 - dc App
CSAPP 보쉴?
일단 위에 틀린 애 있어서 정정하자면 malloc은 system call 아님. malloc은 내부적으로 mmap 또는 sbrk 호출함
mmu가 있는 아키텍처에 한정해 얘기하자면, os가 memory mapping (virtual to physical) (아마도 user process의 task_struct의 vma_struct로 표현될듯?) 안 만들어 주면 user-level process는 절대 메모리를 사용할 수 없음. malloc을 호출하게 되면 (1) 쓰고 회수된 메모리가 있으면 그걸 반환, (2) 남은 메모리가 없으면 os한테 memory mapping 만들어 달라고 요청하고 새로 mapping된 영역의 memory를 반환함 크게 둘 중 하나로 동작
스택과 힙은 너무 평소에는 너무 공기와 같이 생각해서 지금 좀 헷갈리는데, process 처음 init하는 단계에서 할당하는 과정이 있을 듯. 전에 본 영상인데 main()이 호출되기 전에 무슨 일이 일어나는 지 다루는 영상임. main이 호출되기 전에 불리는 함수에서 뭔가 일이 일어나고 있을 거로 예상됨. 아니면 strace 찍어봐도 되고.
아 영상 주소는
https://youtu.be/dOfucXtyEsU