60

You are conflating a number of issues here. Why does my software have all these features to begin with? Because other computers' software has those features, and network effects punish any software developer who doesn't follow the herd. Let's take an example from your question: Why does my web browser need to do anything other than basic HTML and CSS? ...


28

That means, one year of computation time on a single GPU (or half a year on two GPUs, or a quarter of a year on four GPUs, etc.). If you are thinking of using this term in your own writing, I encourage you to also specify what type of GPU you are using. One-GPU year on a Tesla V100 GPU is a lot more computation than one-GPU year on a K520 GPU. The notion ...


13

Since the other answers go pretty well into why companies just buy general purpose computers, I wanted to give an answer about security. In a lot of ways, it's easier to secure a system you know is insecure, than to secure a system you are pretty sure is secure but don't know in what ways it might be insecure. Windows 10 may have security vulnerabilities, ...


5

"If I were running a company ... the employee would see only the "sections" that are relevant for them, coded by me." You are not prescient. You cannot predict the future requirements of all your employees with sufficient accuracy to know the minimum set of "section" that are relevant or suitable for any given employee. The work required to refine this ...


5

I'd use a simple username/password system, with no password resets or two-factor auth Password resets are required somewhere because people forget passwords. 2FA is required sometimes because they leak, as it turns out that building software free of security bugs is incredibly difficult. and once logged in, the employee would see only the sections that ...


4

Yes, you use microkernel operating systems. If you use a modern Intel CPU, it includes a copy of Minix which runs on a separate processor that is embedded in the processor that you think you have. Chances are also very good that at least a few of your peripherals use microkernel operating systems internally. Moreover, you may not use any of these, but a lot ...


4

I would argue that the premise of the question makes a wrong assumption: There is an enormous amount of people that use computers set up to perform a single task. Behind the scenes, they're generic systems running a full OS and having all capability, but the machine has been specialized for some tasks. For example: Cashiers use machines which are commonly ...


3

The minimum that you need is zero registers. And there have been actual computers with zero registers. The most popular Pascal compiler (UCSD-Pascal) generated "p-code" which used zero registers; it was usually interpreted, but there was actually a hardware implementation.


3

You need to make your question a bit more precise. First, regarding your request to avoid "unlimited" registers -- I assume you mean registers that can hold an arbitrary value (e.g., any natural number). If you a-priori bound your registers, then the possible states your machine can be in is finite. That is, you have a deterministic finite automaton (or ...


3

TL;DR: Modern computers are general purpose tools. They have a huge diversity of capabilities which will never be used simultaneously. All of these capabilities integrate with each other which creates huge complexity. More specialised systems are not created because generally it is more expensive to make and sell a reduced feature system than an existing ...


3

There are two possibilities: No operation is allowed to take longer than one clock cycle. If the designers of the CPU can't fit an operation into one clock cycle, then either the clock cycle must be made longer, or that operation must be split into two, or they designers work extra hard to make that operation faster. That's the more common way to do this. ...


3

Where did you find that terminology? Check how it is defined there. If it was up to me, a "device descriptor" would be a way to describe a device, perhaps a data structure giving details on it (or some sort of reference to it, like a pointer or an index into an array of the above). As you state, in my book a "device handler" would be some sort of routine (...


3

Farthest-in-future is optimal, second chance can't be better. Second chance is a way to approximate LRU when the required hardware (access times, sort them) isn't available. Both try to approximate the optimal strategy, there certainly can be cases where one or the other is better.


3

The point you make at the very end of your question is the right one. No modern computer has a stack. In hardware terms it turns out to be superfluous, wasteful and useless. A stack is superfluous because one can easily perform the operations “write a value”, “retrieve the last value written”, and so on by having a pointer to a memory location. “Push” can be ...


3

No. In most operating systems, kernel memory is protected using virtual memory mechanisms, so a user process cannot read or write to kernel memory. A user thread is part of a user process, and has the same permissions as the process. So, a user thread will not be able to write to kernel memory.


2

The $32$ bit page frame address acts as a base address and will be typically stored in an index register. An individual machine code instruction (e.g. a branch instruction) will then contain a $12$ byte bit offset. The offset is added to the base address to create the complete $44$ byte bit address.


2

The paper in question, as pointed out in the comments, contains the following footnote: Reproducing these experiments requires approximately 6.85 GPU years (NVIDIA P100) Note the mention of the exact GPU type that this statement is referring to in parentheses. This is vital information. As with most execution time measurements for software, you really ...


2

In textbooks, the solution given is 6+8+13+20+21= 68/5 = 13.6 This is because the textbooks (including Operating System Concepts 8e by Silberschatz,Gagne,Gelvin) define turnaround time as the time that elapses between the submission and the termination of the process, which is the sum of arrival time, waiting time, execution time and time spent in device ...


2

So even if the process is in waiting state we still call it "busy waiting"? In the book, they are calling the mechanism as Busy Wait not because of the processes waiting in queue but rather for the fact that when multiple processes are trying to execute Wait() or signal() operation concurrently, they will have to busy wait. Note that the variable &...


2

I followed your link to the “Inferno” Wikipedia page. And there it says this OS is maintained by some group as “open source”. There are two problems: The group that maintains it doesn’t even have a Wikipedia link. It is a U.K. private company exempt from filing which means it doesn’t do any business. I own a company just like that myself. So the level of ...


2

This is part of an answer. Others will probably be able to add other points. A chess platform has to do a limited number of things, while an OS has to be able to do everything that OSes do, which is unlimited. You need lots of utilities, lots of apps written, and to get those, lots of compilers and coders' tools, etc. It's a much harder thing to get off ...


2

Why not? Many would dispute the weight of your criticisms. we have full-fledged PCs with expensive, bloated, and insecure Microsoft or Linux software Expensive? GNU/Linux is free of charge; Windows comes bundled with most PCs often contributing less than 10% to the price (sort of.) Web browsers are free. Some applications aren't free, but if you don't ...


2

Real-world software is not designed to run on a single computer, but on an ecosystem, meaning that it interfaces with other software components, based on standards that have all kinds of different governance structures behind them. Complex ecosystems like this evolve on their own terms, and solutions do not scale elegantly, but given enough time they may ...


2

the employee would see only the sections that are relevant for them, coded by me. This is a very dangerous mindset for any programmer. A company is comprised of lots of people with various evolving and changing roles. You often cannot standardize their jobs to a degree to decide what is relevant for them all the time. There are some jobs where we try to, e....


2

It would be good to have as much as we got RAM, because RAM is slow and registers are blazingly fast. Registers are expensive and RAM is cheap (per bit), so we got what we got -- some registers and cache to fight RAM latency. Some people may say, that it won't be good if all RAM was replaced by register memory, because to address these registers we would ...


2

There's cache misses when you access a page for the first time, then you get hits. Since the kernel initialises the page, it gets all the cache misses. Then it passes the page to the user code, which gets cache hits. The same misses would happen in user code if the kernel didn't initialise the page.


2

If your question is "can one and the same sequence of bits sometimes represent a machine instruction and sometimes represent data" then the answer is definitely yes. If your question is "can one and the same location in memory sometimes hold a machine instruction and sometimes hold data" then the answer is it depends on the machine architecture. The Harvard ...


2

Yes, the kernel zeroes out pages before allocating them to a user-level process. The details depend on the specific operating system; some may zero it out when the page is needed, others might run a separate thread that periodically zeroes out pages in anticipation that they'll be allocated.


2

Other than the fact that kernels tend to be small, as Yuval points out, you should also consider that they are often not relocatable code (in fact, address binding for kernels is done at compile-time) and so the memory they are allocated could not be moved or swapped-out in any case, not only for paging. Obviously there are also performance-related concerns,...


2

Porting to a different operating system is about a lot more than the particular assembly language you use. Different operating systems have different system calls, different libraries, and different APIs, and converting from one to another is usually not something that can be done in an automated way -- even if both used exactly the same assembly language. ...


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