operating-system,virtual-memory,context-switch,tlb,page-tables , Flush TLB on a context swtich

Flush TLB on a context swtich


Tag: operating-system,virtual-memory,context-switch,tlb,page-tables

This may depends on the OS, but in general as I understand that when there a page fault (the desired page is not in main memory) occurs OS will instruct CPU to read the page from disk, and I am wondering does OS dispatch to another process while the disk I/O ? if it does then there will be a complete flushing of the TLB on a context switch, correct ?


More or less, but a page fault doesn't always mean the page is on the disk (it could also not exist at all, be a lazy-allocation page, be a copy-on-write page that was written to, exist but be marked unreadable/unwritable, etc). But if that's how it is, it's probably going to schedule an other thread at least because disk IO takes approximately forever.

The amount of switching necessary depends on what it switches to, switching between threads from the same context doesn't imply a TLB flush. If a TLB flush is necessary, it's probably not a complete flush, because of global pages (so typically, you're not flushing out TLB entries for kernel pages). There is also PCID to avoid complete flushes (flushing can be limited to specified process context IDs), but that's quite recent, and tricky to use since there are only 4096 different IDs.


Implementing a simple spin lock given some instruction

For instance if have the following code which is some If set then clear and performs atomic in following manner. This is simple C code. int IfSetThenClear(int * ptr) { int actual = *ptr; if(actual== 1) *ptr = 0; return actual; } Now i want to use this given instruction...

How to change ubuntu to root?

I am new to linux. when i list the files under folder 1, i see below result -rwxrwxrwx 1 root root 920 Jun 3 10:36 file1.xsd -rwxrwxrwx 1 root root 920 Jun 3 10:36 file2.xsd drwxrwxrwx 2 ubuntu ubuntu 4096 Jun 12 11:10 temp -rwxrwxrwx 1 ubuntu ubuntu 1853 Jun...

How my computer knows a char corresponds to which character?

Does my OS load a font file which maps the UTF-8 codes to characters(the way to render it ) when I start up my computer? Since there are a lot of different fonts, the font files will consume a lot of memory? Or the font files are stored in hard-disk...

How do I fork an external process in java

I'm trying to fork a new external process (such as Calculator) in Java. I'm new to operating systems but I learned that it's possible using something like : Runtime.getRuntime ().exec ("C:\\Windows\\system32\\calc.exe");. However that doesn't actually fork a new process. Is there anyway I can fork an external process using java?

Not Used Recently (NUR) Page Replacement Algorithm [closed]

How to implement NUR (Not used recently page replacement algorithm) using any high level programming language (c, c++ or java)

Not checking file size correctly

I wrote a simple script to move movies in my downloads directory, once they are finished downloading, to the location they need to go and have a simple question regarding it. Maybe I'm not understanding how the os module is working to the current size of the file here, but...

OS- How to properly print a spacebar in the video memory in a kernel?

I know this the title is weird (I don't know how to explain it :| )but if u see my problem u will get it. I am making an os in assembly and c i have made a kernel and i have text input and output but i am having...

Coding of Admin-Guest login section in an OS

I developed an authentication algorithm for user authentication as part of my masters thesis and implemented it in PHP. I intend to know how can I implement the algorithm for operating system login, in which language (for linux)? also where the code will reside because it will not be click...

Not Getting keyboard input in c kernel protected mode

I am making an OS in C and 32bit Assembly following James Molloy's tutorial till IRQs and PIT step and i am trying to get keyboard input i tried this code added to the tutorials' code but i am not able to get things right. Keyboard.c: #include "keyboard.h" #include "common.h"...

Trouble outputing file size to a label from a listbox in Python 3

I'm using os.path.getsize() to output the size of a file to a label. The file path is stored in a listbox. The function works, but it outputs the file size in bits, so I wrote the following to convert to more appropriate units, and it is now displaying only in...

c - loading raw binaries

Is it possible to execute a raw binary stored in a char array? I tried doing it like so: #include "stdio.h" int main(int argc, char **argv) { FILE *f = fopen(argv[1],"r"); if(!f) return 1; fseek(f,0,SEEK_END); long l=ftell(f); rewind(f); char *buf = malloc(l+1); fread(buf,1,l,f); fclose(f); void (*func)() = (void(*))buf; func(); }...

Memory Management (Allocating Pages/Frames to Logical Addresses)

I am new to Operating Systems and I was following this handbook which I am reading to get a better grasp on how computers really work. However having stumbled upon Memory Management I found it somewhat confusing when allocating Frames to Pages using Page tables. Say Page/Frame size is 4K...

can paging be slower/faster than swapping on a machine?

This is a very naive question, but I wonder if there is any comparison that can be made on paging or swapping speed? They are offering the same functionality (moving from memory to disk, etc) but with different strategies (writing frames, or writing down the whole memory). Now the problem...

Determine addresses and page table size

I know that this question has been asked many times but I still feel I struggle with it. Given: physical memory: 2^20 32-bit system page size: 2^10 I need to determine what a physical and virtual addresses would look like as well as calculate the page table size. I am...

Protected mode, setting segment registers

I'm recently playing with gnu-assembler in simple os development. I'm using code below to switch CPU to protected mode. In order to do this I set GDT as follow and performed far jump to given label wit 0x08 as GDT offset (to set CS). CPU did not reset itself after...

How does virtual memory maintains its efficiency?

Given the large number of miss penalties, why doesn't paging affects or reduces the program performance? how is possible for virtual memory to be efficient?

How to tell the difference between linux and mac

I am creating a setup file for a tarball, and I need a way to determine the exact name of the system. I tried os.name, but it returns 'posix' regardless of whether the system is mac or linux. Is there a way to get a more specific OS name?...

ImageMagick code in Python script

I need to convert an image so as it only shows the color blue as a blob, is there any way I can run this code in a python script? Or how could I go about it? The following code does the job but I don't know how to link...

^M behind operating system version?

I am currently writing a perl script to extract data from a log file and create statements using the data in a new file. In this new file, one particular data that I've extracted and used here is the operating system's version. It shows Windows XP Service Pack 3^M. I...

Why do we need to install a C++ compiler? [closed]

I have heard that all the popular OSes (Windows, Linux, Mac OS X) are built from C++ or C. Why, then, do we need to install GCC or any C++ compiler? Shouldn't programs be compiled by the computer itself as these operating systems support C++ and C?

When will the virtual page number have more bits than the physical frame number?

I have the following question on a practice exam: For a computer system that implements paging, under what circumstance will the VPN (virtual page number) have more bits than the PFN (physical frame number)? I am trying to argue that: The number of bits to represent the virtual page number...

What is the Best Linux OS for Samsung 900x? [closed]

I was just wondering if you can recommend me a Linux OS for my Samsung 900x laptop. I just want to familiarize myself with the Linux OS and I know companies like people who uses Linux. Thanks!

Bound wait to solve race condition

I am trying to Give a race condition example , then write an algorithm to impose synchronization and write an algorithm that implement the Bounded wait solution?! I tried the case of when two admins A and B in the school receive 2 students to register them if they hit...

How does the OS decide data that goes in each page?

I have a comma separated data file, lets assume each record is of fixed length. How does the OS(Linux) determine, which data parts are kept in one page in the hard disk? Does it simply look at the file, organize the records one after the other(sequentially) in one page? Is...

Switch to user space

this is part of code which demonstrates basic functions of os kernel. After flushing GTD and setting up IDT I want to switch to ring 3 run some int and context switch. However I cannot jump to user mode. I want to use trick with iret instruction. As far I...

What does a valid idle thread implementation look like?

It is well known that a busy waiting is bad because it wastes CPU time. But what is done in modern operating systems to make the OS idle thread work well? Is it just a busy wait? If so, what is done to conserve power? What is the best approach?...

What is system app [closed]

I have few questions, What is a system application? How do you go about developing system applications? What is the difference between user and system applications? How is it possible for Android devices to have default system applications without having them installed by the user? ...

What happens when Binary Semaphore is Signalled twice? ie. s=1;wait(s); signal(s)signal(s); Does s becomes 0 or it remains 1?

What happens when Binary Semaphore is Signalled twice? i.e. Suppose s is binary semaphore variable with s=1 Now we do following-- wait(s),signal(s),signal(s) Does s becomes 0 or it remains 1?...

Will OS provide virtual address space?

This is an interview question. I am writing all the details the interviewer gave me. The question is:- A system has a memory of 1GB. A process requires only 1MB of memory. Assuming no other processes are running in memory, will the OS provide virtual address translation for this process...

Android - What is the difference between a foreground and background service?

From android.com it says that a foreground service is something that the user is aware of and a foreground service is unlikely to be killed if memory is needed. It says a background service may be killed if memory is needed. Is this the only difference or can one service...

C Kernel - Works fine on VM but not actual computer?

I am making a basic C kernel. (Loaded by an assembly program) I am compiling it with an i686-elf cross compiler for windows. My C code is as follows: void cls(); void drawhappy(); void main(){ char *vidptr = (char *)0xb8000; cls(); drawhappy(); } void cls(){ char *vidptr = (char *)0xb8000;...

How to translate these logical addresses into physical addresses?

Given that: Logical addresss space=64 bits Physical address space=32 bits Page size=4K How will the logical addresses 20, 4100 and 8300 be mapped to physical address for the following page table? ...

shuting down an OS without using API's

i was trying to add a shutdown feature to my home-made OS , but i don't really have such API yet . i was wondering how does the OS's terminates the power ? i'd be appreciate it if somebody could give me some guidelines for start .

What is a kernel stack used for?

The following is a description I read of a context switch between process A and process B. I don't understand what a kernel stack is used for. There is suppose to be a per process kernel stack. And the description I am reading speaks of saving registers of A onto...

Need suggestions for Android project

I have been assigned one project of Android, but before taking it I need your advice. I have following low level features I need to hide whole operating system in android and only show my application, even device reboot or reset whenever it start it will show only my application....

About Idle tasks in operating systems

Every system has IDLE task which will be running if no other tasks are ready to run.So my question is , can IDLE task sleep?. My understanding is if idle task sleep then there is a chance of no task is available for the cpu to run. Is my understanding...

Interrupt Descriptor Table Gate

I've written this code to create a sample IDT and load it in to the proper register. I've checked Intel System programming guides for proper structures, and yet I can't get interrupts working. While running kernel code in Bochs, and triggering interrupt (using __asm__ ("int $32"); I get a log...

NSUserDefaults not working on Xcode beta with Watch OS2

I just installed the latest beta of Xcode to try Swift 2 and the improvements made to the Apple Watch development section. I'm actually having an hard time figuring out WHY this basic NSUserDefaults method to share informations between iOS and Watch OS2 isn't working. I followed this step-by-step tutorial...

Difference between switch & bus architecture?

I was just going through a operating systems textbook but I got stuck at switch architecture . Please explain what it is and how it is different from bus architecture ?...

Prevent the OS from swapping objects to virtual memory/disk in Java?

So I have a program that has the user enter a passphrase. I only hold the passphrase for a few seconds in a char[] before overwriting it but I was wondering if there was a way in Java to prevent the OS from swapping this bit to disk/virtual memory/any more...

How to detect that music play in background

I want help in detecting if there is a music play in background on the phone or not because I play more than one music sequentially in my app but they are intersection thank you

Why does main function differ from other function from stack point of view

I'm studying to use gdb and i got little confused. Here is my code: #include <stdio.h> #include <stdlib.h> #include <string.h> void g(char *password) { } int main(int argc, char *argv[]) { if(argc > 1) { g(argv[1]); } } So with the regular function (g() in this example) if I want...

Linux - process killed when linking section into lowest 2 MB of memory?

I'm learning about LD linker scripts, and I noticed that if I link the .text section (or any section) at an address lower than than 2 MB, my process gets instantly killed by Linux as soon as I run it. Here's an example script I'm using: SECTIONS { . =...

Microcontroller specific codes in OS (Contiki)

I am working on creating a port for LPC1347 to contiki-os. I have 2 questions: 1: What i do not understand is how would the os know what architecture the hardware follows ie, whether is Harvard architecture or Neumann architecture. The microcontroller has 2 srams, so does the compiler or...

about GDT and processes

how does GDT reflected on linear space of process ( if I understand it right, GDTR contains page and offset ) .? or another version of this question : GDTR is unique for each process .?

Random access alternative to named pipes

Is there a way to create a "file" (i.e. some point in the file system) that can then be opened by any program as a regular file, but reading/writing to it will go to a program instead of to disk? Named pipe seems to meet all the requirements, except it...

Automate MySQL backup @localhost with mysqldump in Windows 8

I'm trying to set up a task in Windows 8 to automate my localhost db dump. I've created the task to run daily with the following command line: C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe and parameters: --user=root --password=donttellya --result-file=dumped.sql mydb It works but doesn't terminate (running in the tasks list). Also, I'd...

Bind multiple threads to multiple CPU?

I have multiple threads that are accessing the same data and it is too painful to make them thread safe. Therefore, they are now forced to run only on one CPU core using CPU affinity and only one thread can be running at the same time. I was wondering if...