28

One of the roles of a multitasking operating system kernel is scheduling: determining which thread of execution to execute when. So such a kernel has some notion of thread or process. A thread is a sequential piece of code that is executing, and has its own stack and sometimes other data. In an operating system context, people usually use process to mean a ...


27

This depends on both the processor architecture and the kernel architecture. Generally speaking, interrupt handlers start with interrupts disabled. This is necessary so that the interrupt handler has room for storage — at a minimum, the interrupt handler needs the exclusive use of a few registers, including the program counter, which the processor must save ...


15

You seem to be overloading the term 'blocking'. Any context switch you make to the kernel, you have to wait for it to switch back to the usermode before your application can continue. This is not what is usually called 'blocking'. In the current kernel design, blocking calls are calls where the kernel returns only when the request is complete (or error ...


14

It's actually not that hard to design an operating system that doesn't require an MMU. There are a few conveniences you'll have to do without, but nothing insurmountable. Since different tasks will have to be loaded at different addresses, all your code (except for the kernel, the standard library, and any other code that's part of your base runtime ...


13

On startup, the kernel will initialize an interrupt vector table (called an interrupt descriptor table or IDT on x86) that points to an interrupt handler for each line. Before the 80286, the IDT was always stored at a fixed address; starting with the 80286, the IDT is loaded using the LIDT instruction. Interrupt vector tables point to a single handler per ...


12

Yes, there is a predefined place that contains the address of code to jump to: an interrupt vector. Depending on the processor, this can be a specific location in physical memory (8088), a specific location in virtual memory, a processor register, a location in memory indicated by a register (ARM, 386), … The details vary on different processors, but the ...


11

As is always the answer (or at least the preface) to performance-related questions: know your problem domain, run comparative benchmarks, and remember what premature optimization is. First, no comprehensive benchmarking trials have compared monolithic kernels to current-generation microkernel systems that operate in an equivalent manner. So, while there may ...


8

Depending on the language, there can be many development challenges: Pointers: If a language doesn't have pointers, it will be a challenge to do relatively-easy tasks. For example, you can use pointers to write to VGA memory for printing to the screen. However, in a managed language, you will need some kind of "plug" (from C/C++) to do the same. Assembly: ...


8

From what I understand you are asking what are the technical benefits of zircon over linux? First of all zircon is a micro kernel as opposed to the linux monolithic kernel. So lets look at some of the advantages of an microkernel over a monolith: Segmentation, a micro kernel has a very segmented model and drivers live outside of the kernel. That means you ...


7

I think hybrid threading is very similar to a thread pool. In thread pool, you are using $N$ kernel threads to execute $M$ “tasks”, where $M$ can be much higher than $N$. The advantage over using one thread for each task (kernel only threading) is that you consume less resources, like memory (both virtual and physical) and kernel objects (at least in the ...


7

First you need to understand the goals of Microsoft Research. Our labs are unique among corporate research facilities in that they balance an open academic model with an effective process for building research results into product development. This approach, unique among corporate research facilities, pays off for Microsoft as enhancements to ...


7

The thing that runs on top of a hypervisor is one or more full operating systems. A hypervisor virtualizes the hardware, so that each operating system is "tricked" into believing that it has an entire machine to itself. The engineering genius that goes into hypervisors is how to provide this virtualization at little or no cost (compared to running one ...


7

No. The Operating System is going to use context switching and virtual memory to hide the fact that there are multiple processes running on the computer. Native code does not mean you have full control to the CPU registers, global physical memory. Your program, if not privileged, is still running in user mode. You need to use syscalls to do lower level tasks....


6

My best guess: a student process is a process run by a student. All users have to log in. The OS may well know various types of users, and may be able to determine from some table that a given user is a student. This can be useful to lower their priority for computer time in a shared machine used mainly for research, or possibly do the opposite during exam ...


6

it is probably not so accurate to say the project is "closed". wikipedia says it is "completed" (2007) as basically a "proof of concept" type project. the code is nearly open source and still available for researchers to build on. the site is still available. one "deliverable" of the project can be seen as academic papers of which there are many available. ...


6

According to Wikipedia, a computer file is simply a resource for storing information. The term appears to have originated in the punch card era, where a computer program was literally stored in a file (as in, a box used to store loose pages, see image below). As other forms of media were introduced, such as disks, the nomenclature followed. From a *nix ...


5

Given the details you have given us, you are of course right. There is no shell between the hardware and the kernel; that's just silly. Asking "but what if there were?" would be like asking "but what if pigs could fly?". It is likely that either there was some misunderstanding or that the examiner is confused. The former is much, much more likely. One ...


5

The malicious user has to first get the malicious code into kernel space somehow. User and kernel address spaces often look contiguous under linux and various unixes, but user space isn't mapped into kernel space, and vice versa. Some variations of Unix (the Masscomp system, as I recall) made this more explicit by having user space and kernel space start at ...


5

I have heard it claimed (by a researcher working on a competing microkernel technique) that very little is known about how to evaluate security of systems that are extensible through managed code. The problem is that the kinds of bugs that might cause a security hole are very different than security researchers are used to. In a traditional microkernel all ...


5

Just as multiprogramming allows the processor to handle multiple batch jobs at a time, multiprogramming can also be used to handle multiple interactive jobs. In this latter case, the technique is reffered to as time sharing, because processor time is shared among multiple users. In a time-sharing system, multiple users simultaneously access the system ...


4

As general concepts, the words signal, notification and event are mostly interchangeable, though they carry different connotations and some words wouldn't be used to denote some specific mechanisms. A particular operating system or other concurrency framework may use these terms for different mechanisms. Some differences to watch for (with signals, events ...


4

I prefer to call Windows NT and Apple's XNU kernel monolithic instead of hybrid. I don't find the classification of hybrid to have much meaning in practice. In fact one of the original engineers of XNU calls it monolithic[1]. On the issue of performance, the only really in-depth comparison of monolithic vs micro I can find is "Extreme High Performance ...


4

Think of kernel level threads as "virtual processors" and user level threads as simply threads (Let's call them as such for now). Now, for a thread to be executed, it has get assigned on to a processor right? So, each thread gets assigned to a virtual processor so that it can be executed. Here are facts Creating a new virtual processor is a bit costly. (...


4

Basically, a module runs at the same memory space than the kernel and a server runs in a different one. Although a module can surely be added/removed on-the-fly (linux kernel does that), any misbehavior caused by it may affect the entire system, whether in the micro-kernel architecture, only the server gets compromised.


4

As, the linked answers and the explanations provided by your textbooks describe that, user level threads are transparent to the kernel, yes they are indeed. Kernel Level threads are not transparent to the kernel, but user level threads are. Because you yourself said, that User Level Threads are managed by the User level library, and what happens is, the ...


4

Applications don't deal with TCP packets at all. The operating system presents an interface somewhat similar to the file system and the application just writes data to that interface. The OS deals with organizing that data into packets and sending it across the network. Likewise, received data is handled by giving the application an interface that's similar ...


3

I think that what is going on here is this. In most operating systems, including Windows, there are lots of data structures inside the kernel that the kernel "shares" between all the processes running on the machine. In early versions of Win32 (starting maybe with Windows 95?) there are some kernel data structures, specifically those having to do with the ...


2

As noted in the question, the performance impact of critical sections has two components: the limiting of parallelism and the overhead in providing the isolation guarantees. The limiting of parallelism can be addressed by minimizing the context, frequency, and duration of the critical section. Using finer-grained locking or transactional memory allows ...


2

I think of a file as a sequence of bytes. Even after it loses its name (usually caused by a call to rm, which unlinks it), it still exists on the disk until its chunks get overwritten by other stuff. File formats are contexts for reading files. It all goes back to the principle that information is bytes plus context. The previous poster is right that ...


2

Usually, everything is compiled in advance: the kernel and userland applications. Roughly, the kernel is written in a special place on the disk (or other permanent memory), which the hardware will access at boot time, copy in RAM, and execute. The kernel includes the disk driver and the filesystem driver, and will look for specific files on the disk, using ...


Only top voted, non community-wiki answers of a minimum length are eligible