General :: Division Of Logical Memory Space In To User Space And Kernel Space
Jan 4, 2010
Logical Memory Space of 4GB is divided in to 3GB User Space and 1GB Kernel Space. Always. Correct?
1. How can we change it? (just changing value of PAGE_OFFSET is okay?)
2. If system have only 256MB of memory (embedded system) and suppose Kernel Modules eat away all the memory during boot. User space will be left will no memory. Is this case possible?
I am writing device driver in which i have to call callback function from kernel space, which are saving my data. But the callback functions are in userspace. While accessing them i am getting segmentation fault.
I am developing a I2C CDROM client driver. The CDROM firmware supports TOC information read through a I2C command. It sends the TOC information in burst ( Interrupts a GPIO pin when it is ready ) and my CPU does a I2C read to read the TOC. When the CDROM firmware finishes sending the last data burst , it informs my CPU that it is done with the TOC, by a flag in the last data burst. I would like to know, which is the most efficinet way I can send these TOC information to userspace?
I wanna write a file in kernel space but from my searching I can to know that instead of writeing file in kernel space ,I can write data to user space by copy_to_user space.
But link is missing ...I dont know how will my user space will access kernel space means my function in kernel space which will do copy_to_user /....How my user space function will call my kernel level function ..
Can any one of you provide me with some example file which are doing this .I know every char driver is using it ...but i could not trace back how user level function is accessing it ...i m confused between user space and kernel space.
I have the following requirement in my module. The driver gets some data from the external device. After getting 1MB of data it has to send it to the user space application. What is the best thing to implement for this in driver.? Is it ok to implement like, after getting data, the driver will send a signal to the user space application. Then the user space application sends an ioctl to read the data. Is there any alternate, that the driver directly sends the data without the user space application asks for it.?
In a 32-bit system, max memory addressable is 4GB. Now Linux kernel does memory mapping division of 1GB for kernel address space and 3GB for user address space. That means 4GB of virtual address space is divided between kernel (1GB) and user (3GB).
Q1. All virtual mapping utilizes the available physical RAM without any division? I mean to say that if RAM is 512MB then a page in kernel space can lie any where RAM (leave aside old PCI dma accesses)? (How this fits to fact that kernel memory is non-pageble)
Q2. If a process is created in user space, it has visibility 4GB address space or 3GB address space?
As i undertsand - out of 1GB of the virtual Address space for Kernel from 3GB to 4GB of the process address space, Kernel image (code, data, bss, stack, heap) resides staring @0x0 address. Vmalloc area starts either at the end of Physical ram size or at 896M. This 896M cap is mandated to ensure that minimum of 128MB is reserved as vmalloc_reserve for vmalloc,kmap etc.
Is the understanding correct? Now trying to map Physical Zones into this 1GB address space
Initial 16MB is mapped to ZONE_DMA 16MB - 896MB is mapped to ZONE_NORMAL 896MB - 1024MB is mapped to ZONE_HIGHMEM
Does this mean that Kernel image is residing in ZONE_DMA area? Any call to vmalloc() in kernel code will return address beyond 896M? insmod of any LKM will internally invoke vmalloc() to obtain contiguous area - where will this code physically located along with rest of kernel code in ZONE_DMA or in ZONE_HIGHMEM?
I need a shared buffer between user and kernel space. I read that one way is to allocated buffer in kernel and then call mmap from the user space. I searched for an example but couldn't find something useful. If you know, could you please send me any links or sample code that does this..
I'm running an embedded Linux kernel, and I want to obtain a real memory address from user space. After goggeling a little, I found that the only way was to use mmap to access /dev/mem. But I never used mmap. I want to load a program in memory, in order to make it available from another processor, that has access to the DDR, but not to the flash memory where program is stored. Here is the code I use:
Code: // Open file and get its size FILE* program = fopen(argv[3],"rb"); fseek(program, 0, SEEK_END); long program_size = ftell(program); fseek(program, 0, SEEK_SET); // Prepare memory to copy it in void* program_address = malloc(program_size+1); FILE* memory_stream = fmemopen(program_real_address, program_size + 1, "wb"); [Code]....
I am using malloc and frees a lot in my program. It shows its allocated but when i remove it doesnt show as the memory is removed(I am using the top command to view VIRT memory usage). If this continously grows what would happen to my program (Will it go out of memory?)
I have linux and windowsxp on one machine. I have only 3gigs free on the windowxp machine and 20gigs free on the linux machine. I want to transfer space from the linux box to the windows machine.Is this possible and what steps would I need to follow to do this?
my home partition is an extended one, and when i want to create an unallocated space the space will stay in that extended partition. but there is also an 7 gb unallocated space which i want to merge with the other unallocated space. I also cannot extend that partition over that 7 gb. how can i overcome that problem?
i m also uploading a screenshot of gparted.[URL]..
Today I was installing a lot of software since I'm just setting up my Slackware system again after a fresh install, and I realized that my root partition has very little space left.
Here is the output of df -h:
Code:
As you can see, I have a 20G (19G here for some reason) root partition, 8G /var, and 86G of /home. I thought this would be plenty since many recent recommendations for / are 10-15G. Now, though, 17G are used up for some reason! How is this possible? I thought a full slackware install only had about 4G of software! I don't have any music or movies or any crazy huge files that I know of, and those would be in my /home directory anyway. Is there any way I can see which files are taking up all this space?
If it's necessary to allocate more space to my / partition, is it still possible to boot up a GParted live Cd, shrink /home a bit, move some partitions to the right, and expand my root partition? I would REALLY prefer I don't have to reinstall since I just spent a ton of time setting up my system again, but if worst comes to worst ... :'-(
I have 160gb laptop. i installed vista in c primary partition which is 25gb and installed ubuntu in d primary partition which is 20gb. A remainig for my data. Now i tried to install CENT OS by formatting ubuntu. I inserted CENT OS DVD and restarted and i selected to delete my /dev/sda2 which is showing 20480mb and it shown me free space. but i tried to add partion /boot of 100mb it got added. but, when i am trying to add / of 3000mb in the remaining 20380mb free space it showing an error message that no free space is available.
I just mounted my drobo(NTFS) on my slackbox using NTFS-3g, and I can read all my files and see them all, but any file name with a space in it turns into EX: (File Name)... instead of (File Name)I am worried that my Sync software will not recognize the name.Does anyone have any tips Except to not put Spaces in the names of files?
I was trying to install Fedora 13, on to my laptop. I have 30 GB of unallocated space in extended partition. When trying to install Fedora 13, I got stuck, as the installer says that there is no free space for installation.can convert the unallocated space into free space.
i used gddrescure to clone an 80gb harddrive and this is the result ROFL.i guess you can only do this making sure the target drive is the same size, you see i didnt know lol so..i now have THIS problem.can anyone tell me how to turn my unallocated space into a usable 'free' space? i could play with gparted right now but i dont wanna do anything wrong, so if theres anyone who can tell me how to do this.
While installing OS, in partition window after OS file system structure I've left 277 GB. But after installation it shows Size - 255GB and available disk space is 242 GB.
Isn't it weired? How can I use the total amount of space in Linux? I need the whole 277GB exactly. What should be my workaround?
I have red hat linux server and it has mysql installed whenever i write on terminal command mysql -u root it shows error "ERROR 2002 (HY000): can't connect to local MYSQL server through '/var/lib/mysql/mysql.sock (111) "
And another problem is that it is showing 0 byte free space istaed of freeing the space. it may seems that both problems are dependent on each other.
I am writing a program which i dont want the kernel scheduler to preempt before certain time duration. I am using the system call sched_get_priority_max to set the maximum priority. However it is not producing results.
i made space by shrinking my window partition and so i have unallocated and would like to add to sda2 to have more space. Check out this pic. How can i do this?