However, if you haven't, you'll be able to write and debug it a lot faster by writing it in Java, Python, Lisp, or some other high level language instead. Most, and larger, performance improvements are obtained through discovering better algorithms, and you'll find it easier, and have more time, if you write it in a high level language, because you won't have to worry about manual memory management, array overflows, and all the other problems you often run into when programming in C. So after development time constraints are taken into account, many programs in higher level languages will often run faster than equivalent C programs.
The things that matter most are development and maintenance time, and response times, not overall run time. Compared to high level languages, C increases the first two and has little effect upon the third. Decades ago, people were happily using computers thousands of times slower.
However, OSes have been written in Lisp, and it has been used for embedded programming, so it's possible to make a language with more abstractions available similarly performant.
The right abstractions even increase the possibilities for optimization a lot, not hinder it. The fact that C is fast and often faster than others is simply due to its decades lasting popularity and the work which was put into compilers over the time.
You can use anything for writing an OS or an embedded program, if you expand the scope of what people consider an OS or an embedded program.
While OSes have been written in Lisp, no mainstream OS people actually use has. Experimental research OSes don't really count. People have written such things in all kinds of languages, even Java.
And while you can use whatever language for "embedded" programming, actual in-the-trenches embedded programming is done mostly in C, in chips and specs where those other languages wouldn't really fit or be performant enough.
You mean expand it beyond "currently mainstream OS with a big installed base" rather than in any technical sense.
> While OSes have been written in Lisp, no mainstream OS people actually use has. Experimental research OSes don't really count. People have written such things in all kinds of languages, even Java.
Lisp machines were shipping production hardware.
Who has shipped hardware programmed in nothing but Java? Java code taking interrupts, programming DMA controllers, managing memory, etc.
Well, the technical sense ("to boot some hardware and coordinate some processes") is too low a barrier.
It's all the other stuff, managing memory efficiently, making the most of software, being fast to make it worthy to run it, making the battery last, etc, being a good server, etc, that make an OS an OS and not a research vehicle/toy/expensive niche workstation (like the LISP machines).
No it obviously isn't. If it boots and coordinates processes, it's an OS.
> expensive niche workstation
In the Lisp machine era, anything that actually had a "real OS" was an expensive workstation (or mini, mainframe, etc).
Affordable consumer machines had software most examples of which didn't control processes, yet was still called some kind of OS: MS-DOS, Mac OS, and the like.
Animations created with the Symbolics Lisp Machine: