Operating Systems 2019W Lecture 10: Difference between revisions

From Soma-notes
Created page with "==Video== The video for the lecture given on February 6, 2019 [https://homeostasis.scs.carleton.ca/~soma/os-2019w/lectures/comp3000-2019w-lec10-20190206.m4v is now available]..."
 
Line 8: Line 8:


==Notes==
==Notes==
===In Class===
<pre>
Lecture 10
----------
What is a filesystem?
- hierarchy of files?
- may or may not have underlying storage
- more formally, hierarchical key-value store
Really, from the kernel's perspective, it is
- functions that can be called to implement filesystem-related system calls
This abstraction is knows as the "virtual filesystem", VFS
In tutorial 4, you're making and manipulating filesystems...stored in block devices
Examples:
/proc      proc filesystem
/sys      sys filesystem
/          ext4 filesystem
/boot/efi  vfat filesystem
/boot      ext2 filesystem
...
/boot/efi/UBUNTU  <-- what filesystem is this on?
mounting is how we associate a subtree (directory) with a filesystem
BAD IDEA
mount /dev/sdc1 /
(assume /dev/sdc is a USB stick)
local, persistent filesystems are normally associated with block devices
- the filesystem is what allows us to use a block device to store files
a block device is a persistent "array" of "blocks"
- blocks are fixed size (i.e. 4K)
- accessed by index
From a storage perspective, a filesystem is a way of storing a file hierarchy on a block device (i.e., in blocks accessed by indices)
So is a filesystem just a tree?
- kind of
Goals for an on-disk filesystem structure
- fault tolerant
- reliable
- high performance
    - takes the characteristics of the block device into account
Normally, block devices (whether hard drives or SSDs)
- sequential access is faster than random access
High level action on an open system call
* process makes open system call, e.g. open("/home/student/foo.txt", ...)
* kernel figures out what filesystem /home/student/foo.txt is on
  (ext4 from /dev/sda2 mounted on /home)
* kernel calls ext4 open function for /dev/sda2, gives it /student/foo
* ext4 looks at /dev/sda2, figures out where the blocks are for /student/foo
* ext4 stores this info in file structure, returns
  <-- what a file descriptor refers to
</pre>

Revision as of 00:44, 7 February 2019

Video

The video for the lecture given on February 6, 2019 is now available.

Readings

Notes

In Class

Lecture 10
----------

What is a filesystem?
 - hierarchy of files?
 - may or may not have underlying storage
 - more formally, hierarchical key-value store
 
Really, from the kernel's perspective, it is
 - functions that can be called to implement filesystem-related system calls

This abstraction is knows as the "virtual filesystem", VFS


In tutorial 4, you're making and manipulating filesystems...stored in block devices


Examples:
/proc      proc filesystem
/sys       sys filesystem
/          ext4 filesystem
/boot/efi  vfat filesystem
/boot      ext2 filesystem
...

/boot/efi/UBUNTU  <-- what filesystem is this on?

mounting is how we associate a subtree (directory) with a filesystem


BAD IDEA

mount /dev/sdc1 /
(assume /dev/sdc is a USB stick)


local, persistent filesystems are normally associated with block devices
 - the filesystem is what allows us to use a block device to store files

a block device is a persistent "array" of "blocks"
 - blocks are fixed size (i.e. 4K)
 - accessed by index

From a storage perspective, a filesystem is a way of storing a file hierarchy on a block device (i.e., in blocks accessed by indices)



So is a filesystem just a tree?
 - kind of

Goals for an on-disk filesystem structure
 - fault tolerant
 - reliable
 - high performance
    - takes the characteristics of the block device into account

Normally, block devices (whether hard drives or SSDs)
 - sequential access is faster than random access


High level action on an open system call

* process makes open system call, e.g. open("/home/student/foo.txt", ...)
* kernel figures out what filesystem /home/student/foo.txt is on
  (ext4 from /dev/sda2 mounted on /home)
* kernel calls ext4 open function for /dev/sda2, gives it /student/foo
* ext4 looks at /dev/sda2, figures out where the blocks are for /student/foo
* ext4 stores this info in file structure, returns
   <-- what a file descriptor refers to