Dr. Mark Humphrys

School of Computing. Dublin City University.

Home      Blog      Teaching      Research      Contact

Online coding site: Ancient Brain

coders   JavaScript worlds


CA170      CA2106      CA686      CA686I

Online AI coding exercises

Project ideas


Programs sit on disk. Maybe not run for years.
Process - An instance of the program running.

Some scenarios:

  1. 1 user. 1 program. n processes.
    • Example: Go on a lab PC with Linux GUI. Launch a bash shell. Then right click "New Window" to launch a second bash shell.
    • You get 1 program, 2 processes.
       ps -u $USER -f | grep bash 
    • Both processes in memory space of the lab PC. But each process is protected from the other.
    • Q. If you multiple launch gedit, do you get one process or two?

  2. n users. Shared memory. 1 program. n processes.
    • Example: Login to student server. Lots of users running nano.
       ps -Af | grep nano 
    • 1 program. n processes. All running in memory space of student server. All protected from each other.

  3. n users. Common file system but not shared memory. 1 program. n processes.
    • Example: n users on lab PCs. Lots of users running a program from /users
    • 1 program.
    • All running the same copy from somewhere in /users
    • n processes. Each in different memory space on its own PC.

Windows processes (Task Manager)

List processes in Task Manager on Windows 10.
Can sort columns.
Shown here is sort by memory usage.

In the "Details" tab of Task Manager you can look at a range of features of each process.
Right click the top bar and "Select columns" to select the columns to show.
You can sort on any column.
Here sorted on Page faults.

Process State

Process state
Loaded from disk (permanent, power-off storage) into memory (RAM).
Recall Memory hierarchy

Starts running.
May pause when doing disk I/O, waiting on user event, etc. Does not always have work for CPU to do.
May pause for long time.

READY to RUNNING - Short-term (CPU) scheduler decides if you can run now.
RUNNING to WAITING - I/O or event wait.
WAITING to READY - I/O or event completion.

CPU scheduling (Time-slicing)



2 (or more) flows of control in the same process. 2 (or more) instruction counters. Same memory (same data and code space).

e.g. Web server - Each request is a separate thread, all running in parallel until request completed.
e.g. Web browser - multiple windows downloading at same time. Each is a separate thread in same process.

Multiple cores

Modern computers have multiple cores (multiple processing units, executing instructions in parallel).

Modern OS will schedule threads and processes across multiple cores.

Processor affinity - The idea that once a process or thread starts running on one core, it is often more efficient to leave it there (and its data in the core's cache memory) rather than change cores.


Cores on Linux

On Linux we can look at multiple core use from command-line using ps and top and other commands.

Display number of cores available:
$ nproc

Show info about the multiple cores: 
$ cat /proc/cpuinfo

Run process using core n (where n is 0 to 3 here):
$ taskset -c n prog

See what processes are currently using what cores:
$ ps -Ao user,pid,ppid,comm,psr 

root         1     0 init              0
root         2     0 kthreadd          2
root         3     2 ksoftirqd/0       0
root        25     2 watchdog/3        3
root       328     1 udevd             3
humphrys 29858 29855 sshd              0
humphrys 29859 29858 csh               0
humphrys 32373 29859 ps                1
humphrys 32374 29859 grep              1

# PSR will be 0 to 3 here 

Query if process is bound to a core:

$ taskset -p 3
pid 3's current affinity mask: 1

$ taskset -p 25
pid 25's current affinity mask: 8

# 0001 (1) - bound to core 0 (see process 3 command /0)
# 0010 (2) - bound to core 1
# 0100 (4) - bound to core 2
# 1000 (8) - bound to core 3 (see process 25 command /3)

$ taskset -p 1
pid 1's current affinity mask: f

# 1111 (f) - can run on all 4 cores, not tied to any core 

See load on different cores:
$ top
(and then press 1)

Event logging

Event logging: The OS logs (in a file) events connected to processes.

Windows focus stealing (Example of using Event Viewer)

  1. I had issue on Windows with hidden application stealing focus and returning it.
  2. Installed Window Focus Logger
  3. This told me the focus stealer was Werfault - Windows Error Reporting system.
  4. This meant some application was constantly generating errors.

  5. Event Viewer - Windows Logs - Application. This showed the application generating the errors.
  6. Delete the application.


Unix/Linux logs

lastlog - user logins on Unix/Linux

ancientbrain.com      w2mind.org      humphrysfamilytree.com

On the Internet since 1987.

Note: Links on this site to user-generated content like Wikipedia are highlighted in red as possibly unreliable. My view is that such links are highly useful but flawed.