diff options
| Commit | 764e6650a754b9258faabc6cdab47b0923651cca (patch) | |
|---|---|---|
| Author | 2023-02-27 19:24:18 +0200 | |
| Committer | 2023-02-27 19:24:18 +0200 | |
| Files | d3ec7d70699f260db863ac2f0b069c6183f687a2 /src | |
| syndamia.com-764e6650a754b9258faabc6cdab47b0923651cca.tar syndamia.com-764e6650a754b9258faabc6cdab47b0923651cca.tar.gz syndamia.com-764e6650a754b9258faabc6cdab47b0923651cca.zip | ||
| Parent | b5beb795727e80a99e109045d4dc6d173ec71866 (diff) | |
[talks/lbs] Fixed grammar mistakes and typos
1 files changed, 19 insertions, 19 deletions
| -rw-r--r-- | src/talks/linuxgraphy-by-strabo/index.md | 38 |
diff --git a/src/talks/linuxgraphy-by-strabo/index.md b/src/talks/linuxgraphy-by-strabo/index.md index 1442c3a..2ad6638 100644 --- a/src/talks/linuxgraphy-by-strabo/index.md +++ b/src/talks/linuxgraphy-by-strabo/index.md @@ -150,7 +150,7 @@ Some of it's novel ideas include, but are not limited to: #### 1969: Death of Multics and birth of UNIX -Ultimately Multics grew too large, becaming unusable and unmaintainable. +Ultimately Multics grew too large, becoming unusable and unmaintainable. In the beginning, programming was done mostly by [Bell Labs](https://en.wikipedia.org/wiki/Bell_Labs), with [Ken Thompson](https://en.wikipedia.org/wiki/Ken_Thompson) being one of the developers. &&lineb1 &&ftable @@ -220,7 +220,7 @@ While on the topic of UNIX, we'll only discuss the former. ### Command-line shells -Command-line shells operate solely with text, usually with only ASCII characters. +Command-line shells operate solely with text, often only with ASCII characters. Usually connecting to a computer (to the shell) is said to be done with either a "terminal" ("console") or "teleprinter" ("teletype"). &&table @@ -271,9 +271,9 @@ Today we don't usually use such specialised hardware, but the names persist with Most commands are regular programs, which exist somewhere on the system. When entering a command name, the shell searches for an executable with that name. -Searching the whole drive is very inneficient, so the search is limited to the few directories, listed in a variable called "PATH". +Searching the whole drive is very inefficient, so the search is limited to the few directories, listed in a variable called "PATH". -You can give a full or relative path, and that will be execute directly. +You can give a full or relative path, and that will be executed directly. Each command can be given parameters, separated by spaces, each (by convention) being either text values or options (switches). @@ -302,7 +302,7 @@ The two major features that every other shell supports are: - pipelines: being able to redirect the output from one command to another without limit ``` - command1 [args...] | command 2 [args...] | ... + command1 [args...] | command2 [args...] | ... ``` &&/clide @@ -332,7 +332,7 @@ The two major features that every other shell supports are: &&lineb1 + **regular**: just a plain old file + **directory**: as explained, a file containing hard links to other files. Each directory is allowed to appear *only once* in a single parent. - + **symbolic link**: points to any file (or directory). It contains the (relative) path to that object (as a simple string), so a symlink could even not be valid. + + **symbolic link**: points to any file (or directory). It contains the (relative) path to that object (as a simple string), so a symlink not could even be valid. Think of a C++ pointer (pseudocode). ``` @@ -373,7 +373,7 @@ The two major features that every other shell supports are: &&clide - + **sockets**: file for inter-process communication. Compared to FIFO specials, they can be used by more than two processes, used in both direction and support [file descriptors](https://en.wikipedia.org/wiki/File_descriptor) and packets + + **sockets**: file for inter-process communication. Compared to FIFO specials, they can be used by more than two processes, used in both directions and support [file descriptors](https://en.wikipedia.org/wiki/File_descriptor) and packets ``` [Process A] <--read&write--> [Socket 1] @@ -414,7 +414,7 @@ Every user has their own "home" folder (under "/home/USERNAME/", except for root Each is represented by a bit in the order above (`101` means you *can* read, *cannot* write, *can* execute) and the overall permissions are often shown as a three digit number or character string. Example: `111101100` will be shown as `754` or `rwxr-xr--` -- link count: the amount of hard links that point to the inode. Every directory inode contains (normally) exactly two: one from the parent and one from itself ("."), though the latter isn't added to the count*^[citation ^needed]* . A file is only deleted where there are no hard links left to it. +- link count: the count of hard links that point to the inode. A file is deleted **only when there are no hard links left to it**. Every directory inode has at least two - one from parent and one from itself ("."), though the latter **isn't** counted. Child and parent directories also **add** to the count. - User ID of owner, Group ID, file size and timestamps @@ -452,7 +452,7 @@ Two of the important things a kernel does is manage **processes** and **memory** &&lineb1 -A program is some collection of code and other data, stored in a file (or uncompiled code). +A program is some collection of code and other data, stored in a file (or noncompiled code). A process is the program in motion, the program itself *alongside* certain system states. The system states include (but are not limited to): @@ -489,7 +489,7 @@ A PCB's data can be split into three categories: 1. **Process identification** - the ID of the process itself, of it's parent process, of it's owner (user), etc. 2. **Process state** - as described, the processor state, etc. - On a context switch, values in register are put into the stopped PCB and then are loaded from the running PCB. + On a context switch, values in registers are put into the stopped PCB and then are loaded from the running PCB. 3. **Process control information** - process state, memory map, privileges, etc. A process can be **forked**, meaning a new process is created, with the same underlying code (but not process states and ...). @@ -553,9 +553,9 @@ Some bad ideas include: depending on the code of all processes to not use the sa &&font18 *Image by [Ehamberg](https://commons.wikimedia.org/wiki/File:Virtual_memory.svg)* &&/font &&/fright -A process work with some (sequential) addresses, and the OS (with the help of [hardware](https://en.wikipedia.org/wiki/Memory_management_unit)) translates/maps the process' addresses (logical/[virtual addresses](https://en.wikipedia.org/wiki/Virtual_address_space)) to real ones (physical addresses). +A program (process) works with some (sequential) addresses, and the OS (with the help of [hardware](https://en.wikipedia.org/wiki/Memory_management_unit)) translates/maps the process' addresses (logical/[virtual addresses](https://en.wikipedia.org/wiki/Virtual_address_space)) to real ones (physical addresses). -We simplify memory management for the program, protects each process' address space and is very flexible. +Simplified memory management for the program, protected address space for each process and improved flexibility. &&/font &&/slide @@ -583,7 +583,7 @@ In the modern day, segmentation isn't used by itself, since resizing segments co &&lineb3 -The virtual and physical memory is divided into fixed-sized chunks of consequtive addresses. +The virtual and physical memory is divided into fixed-sized chunks of consecutive addresses. A virtual memory chunk is called a **page**, while a physical memory chunk is called a (page) **frame**. Usually both have the same size of (at least) 4 KiB. @@ -619,7 +619,7 @@ Disadvantages include: Enough theory, time to have some fun and learn Linux! -We'll be using [Linux Minimal Live](https://ivandavidov.github.io/minimal/#home) (just a bootable ISO) because: +We'll be using [Linux Minimal Live](https://ivandavidov.github.io/minimal/#home) (just a bootable ISO) because it's: - very small, comprised of only the Linux kernel, GNU C library and Busybox - made by a fellow Bulgarian &&bg @@ -685,13 +685,13 @@ Where `name` is either a combination of letters (upper and lower case), numbers Some of the [special parameters](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Special-Parameters) are: -- `0`, correspoinding to the shell's or script's name, +- `0`, corresponding to the shell's or script's name, - `@` is all positional parameters, separated by spaces - `#` is the number of positional parameters - `?` is the last executed (foreground) process - `$` is process ID of the current shell. -`value`, without any special surounding characters (more on that later), is treated as a string (but it mustn't have spaces!), however it may also be omitted, in which case it is the empty string `""`. +`value`, without any special surrounding characters (more on that later), is treated as a string (but it mustn't have spaces!), however it may also be omitted, in which case it is the empty string `""`. &&/font &&/slide @@ -701,7 +701,7 @@ Some of the [special parameters](https://www.gnu.org/savannah-checkouts/gnu/bash #### Data types -In most shells, there are 3 data types: strings, integers and (one-dimentional) indexed arrays. +In most shells, there are 3 data types: strings, integers and (one-dimensional) indexed arrays. [bash has more](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#index-declare), like references and associative arrays, but those aren't universal. A value is a **string** when surrounded by single `'` or double `"` quotes, @@ -750,7 +750,7 @@ Some parameter expansions in bash: - `${#parameter}` length of characters - `${parameter:offset}` and `${parameter:offset:length}` return substring from index offset - `${parameter/pattern/string}` return a string, where every match on pattern is replaced by string -- `${!name[@]}` a (space separated) sequence of indecies from 0 to length (for defined values) of array name +- `${!name[@]}` a (space separated) sequence of indices from 0 to length (for defined values) of array name &&/slide @@ -772,7 +772,7 @@ Some useful expressions are: - `!`, `&&`, `||` logical not, and, or - `expr ? exprTrue : exprFalse` conditional - `=`, `+=`, ..., `<<=`, ... assignment operators -- `expr1 , expr2` consequtive expressions and `(expr)` bracing +- `expr1 , expr2` consecutive expressions and `(expr)` bracing Expressions work with both variable names and integers. |