diff --git a/Technology b/Technology index e3d1a83..3acaa6b 100644 --- a/Technology +++ b/Technology @@ -68,14 +68,12 @@ This concurrency model leads to a cooperative multitasking programming style, rather than the error prone preemptive multitasking where each code block needs to make sure to use appropriate locking strategies, to avoid reentrant execution errors. -A recent example for code which is not safe under reentrant execution, [this -issue in -Ethereum](http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) +A recent example for code which is not safe under reentrant execution +[in Ethereum](http://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) lead to a huge amount of ether being transferred. -More conventional software, such as [Firefox JavaScript engine](http://www.nist.org/news.php?extend.175), -or [php](https://bugs.php.net/bug.php?id=74308) also suffer on a regular basis -from issues regarding reentrancy. +Established software like the [Firefox JavaScript engine](http://www.nist.org/news.php?extend.175), +or [PHP](https://bugs.php.net/bug.php?id=74308) shows similar problems on a regular basis. ### Simple process memory model with localized reasoning @@ -84,7 +82,7 @@ address mapping for each process. Since a unikernel is only a single service, it uses a single address space, avoiding the need for complex address mapping code altogether. -An example for messing up the page table is [Xen's XSA-182](http://xenbits.xen.org/xsa/advisory-182.html). +An example for corrupting the page table is [Xen's XSA-182](http://xenbits.xen.org/xsa/advisory-182.html). ### Simple library model with localized reasoning