Accent is an operating system kernel, most notable for being the predecessor to the Mach kernel. Originally developed at Carnegie Mellon University (CMU), Accent was influenced by the Aleph kernel developed at the University of Rochester. Accent improves upon the older kernel, fixing several problems and re-targeting hardware support for networks of workstation machines (specifically, the Three Rivers PERQ) instead of minicomputers. Accent was part of the SPICE Project at CMU which ran from 1981 to 1985. Development of Accent led directly to the introduction of Mach, used in NeXTSTEP, GNU Hurd, and modern Apple operating systems including Mac OS and iOS. The original Aleph project used data copying to allow programs to communicate. Applications could open ports, which would allow them to receive data sent to them by other programs. The idea was to write a number of servers that would control resources on the machine, passing data along until it reached an end user. In this respect it was similar in concept to Unix, although the implementation was much different, using messages instead of memory. This turned out to have a number of problems, notably that copying memory on their Data General Eclipse was very expensive. In 1979 one of the Aleph engineers, Richard Rashid, left for CMU and started work on a new version of Aleph that avoided its problems. In particular, Accent targeted workstation machines featuring a MMU, using the MMU to "copy" large blocks of memory via mapping, making the memory appear to be in two different places. Only data that was changed by one program or another would have to be physically copied, using the copy-on-write algorithm. To understand the difference, consider two interacting programs, one feeding a file to another. Under Aleph the data from the provider would have to be copied 2kB at a time (due to features of the Eclipse) into the user process. Under Accent the data simply "appeared" in the user process for the cost of a few instructions sent to the MMU. Only if the user process changed the data would anything need to be copied, and even then, only the portions of the data that actually changed. Another problem in Aleph was that its ports were identified by unique ID's that were assigned sequentially. It was simple for a program to "guess" them, thereby gaining access to resources on the computer that it had not been granted.