Eli5 : What is the difference between ISA and Kernel?

276 views

I used to thing that Kernel is the middle-man between hardware and software but i came across this article http://hackernoon.com/understanding-modern-cpu-architecture-part-1
And I confused.

Help me to understand what is the difference between them. Or they are different name for same thing.

In: 0

5 Answers

Anonymous 0 Comments

[deleted]

Anonymous 0 Comments

They are completely different.

Instruction sets architecture (ISA) is a language used to tell the CPU what to do. It defines how you ask the CPU to add, multiply, do other logic, etc.

The kernel is an operating system concept. It is the core code behind an operating system, whose primary job is to provide an environment and tools for programs to run. The kernel is the code that decides what programs to run in what order, allowing programs to access resources they need to run, etc.

Anonymous 0 Comments

The ISA is the actual instruction set and how the CPU works. The exact rules vary between different CPU architectures. Probably the two biggest you might have heard of so far are x86 (32 and 64 bit variants), and ARM.

The ISA of ARM includes details like there are, I believe, 32 registers numbered 0 to 31, and all CPU instructions are exact 4 bytes large. However there is an alternative, optional mode called Thumb mode which makes instructions only 2 bytes each, at the expense that the available instructions are much more limited. Whereas x86 (in 32 bit mode) has a much smaller selection of registers, they have names written as a sequence of letters, with a designated stack pointer register, etc. Instruction lengths vary wildly to the point that I don’t know what the maximum is.

But that’s the hardware, and information that comes in the hardware manufacturer’s manual. Now we come to the software, the kernel. It’s the program that runs on the CPU directly, manages its features, and runs applications under itself with all the security and isolation we’ve come to expect. Programs can’t access RAM belonging to another program, and accessing RAM not assigned to you crashes the application.

However, HOW these functions are implemented will depend on the CPU and ISA that goes with it. Memory is assigned to applications by the kernel, but protection is enforced by the CPU, so the kernel must adopt what is available to it. Eg: x86 has page sizes of 4 kilobytes, 2 megabytes, or 1 gigabyte, but ARM supports 4 kilobytes, 64 kilobytes, and 1 megabyte. The ISA specifies these as available, and how to select the page size, and it’s on the kernel to actually do so to the benefit of the application and its needs.

Anonymous 0 Comments

The ISA is the definition of how the hardware interprets instructions, the kernel is a piece of the software that almost all the other software is built on top of.

Anonymous 0 Comments

A computer program is a sequence of bytes that represent instructions that tell the computer what to do.

An instruction set is the specification that tells you what the bytes mean. For example, the byte 67 means “load the contents of the A register into the H register” — if your CPU happens to be the venerable [Zilog Z80](https://en.wikipedia.org/wiki/Zilog_Z80), that is. Different CPU’s have different instruction sets.

A kernel is a particular kind of program that is basically the “main part” of the OS.

Instruction set architecture is basically a family of related instruction sets. Usually “simple” instructions are the same within the family, but “complicated” instructions may be different.

ISA isn’t a good abbreviation to use for “instruction set architecture,” as this abbreviation already has a well-known meaning in technology; ISA (Industry Standard Architecture) is the [bus used on PC’s until the mid-1990’s](https://en.wikipedia.org/wiki/Industry_Standard_Architecture).